home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-16 / tlb_v202.zip / LASTBYTE.DOC < prev    next >
Text File  |  1992-07-01  |  161KB  |  3,901 lines

  1.  
  2.  
  3.         
  4.  
  5.  
  6.  
  7.  
  8.                         THE LAST BYTE MEMORY MANAGER (tm)
  9.  
  10.  
  11.                        An Upper Memory Manager for MS-DOS
  12.  
  13.  
  14.  
  15.  
  16.                                   Version 2.02
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.                               Copyright (C) 1990-92
  24.  
  25.                                All Rights Reserved
  26.  
  27.  
  28.                                        by
  29.  
  30.  
  31.                               KEY SOFTWARE PRODUCTS
  32.  
  33.                                 440 Ninth Avenue
  34.                           Menlo Park, California 94025
  35.  
  36.                                  (415) 364-9847
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.         The Last Byte Memory Manager is a trademark of Key Software Products.
  52.          MS-DOS and Windows 3.0 are trademarks of Microsoft Corporation.
  53.              DR-DOS is a trademark of Digital Research Incorporated.
  54.                       4DOS is a trademark of J.P. Software.
  55.                      Hyperdisk is a trademark of HyperWare.
  56.             Other company trademarks are used with the company name.
  57.  
  58.  
  59.  
  60.         
  61.  
  62.  
  63.                         THE LAST BYTE MEMORY MANAGER (tm)
  64.  
  65.  
  66.                                 Table of Contents
  67.  
  68.  
  69.         CHAPTER 1 - INTRODUCTION        ...........................    4
  70.            1.1  Important Advantages       ........................    4
  71.  
  72.         CHAPTER 2 - SYSTEM REQUIREMENTS       .....................    6
  73.            2.1  Supported Hardware       ..........................    6
  74.            2.2  Checking Compatibility Using CHIPSET     ..........    8
  75.  
  76.         CHAPTER 3 - DISTRIBUTION FILES       ......................   11
  77.  
  78.         CHAPTER 4 - GETTING STARTED       .........................   13
  79.            4.1  Testing LASTBYTE.SYS HIGHDRVR.SYS and HIGHTSR.EXE     13
  80.            4.2  Mapping Upper Memory with HIGHMEM    ..............   15
  81.            4.3  Running the LICENSE Program     ...................   16
  82.  
  83.         CHAPTER 5 - DETAILED DESCRIPTIONS       ...................   17
  84.            5.1  LASTBYTE.SYS        ...............................   17
  85.            5.2  HIGHAPND.EXE and HIGHAPND.SYS      ................   23
  86.            5.3  HIGHBFRS.EXE (MS-DOS 3 only)     ..................   26
  87.            5.4  HIGHDISK.SYS        ...............................   27
  88.            5.5  HIGHDRVR.SYS        ...............................   28
  89.            5.6  HIGHEMS3.SYS and HIGHEMS4.SYS      ................   29
  90.            5.7  HIGHENV.EXE        ................................   30
  91.            5.8  HIGHFILE.EXE        ...............................   32
  92.            5.9  HIGHHOLE.EXE        ...............................   32
  93.            5.10  HIGHKEY.EXE        ...............................   33
  94.               5.10.1  Options        ..............................   33
  95.               5.10.2  Editing Commands       ......................   34
  96.            5.11  HIGHMARK.EXE        ..............................   35
  97.            5.12  HIGHMEM.EXE        ...............................   36
  98.            5.13  HIGHRSVD.EXE and HIGHRSVD.SYS      ...............   36
  99.            5.14  HIGHSPLR.EXE        ..............................   37
  100.            5.15  HIGHTSR.EXE        ...............................   38
  101.               5.15.1  The /NOENV Option      ......................   39
  102.            5.16  HIGHUMM.SYS        ...............................   40
  103.            5.17  HIGHUNDO.EXE        ..............................   41
  104.  
  105.         CHAPTER 6 - HINTS / SUGGESTIONS / EXPLANATIONS    .........   42
  106.            6.1  The /SIZE Option      .............................   42
  107.               6.1.1  Measuring Load Requirements Using /SIZE    ...   42
  108.               6.1.2  Achieving Best Fit Using /SIZE:n1    .........   43
  109.               6.1.3  Borrowing Initialization Memory Using /SIZE:n1   43
  110.            6.2  The /LOW Option      ..............................   43
  111.            6.3  The /RESTRICT Option      .........................   44
  112.            6.4  The /!NOPAUSE Option      .........................   44
  113.            6.5  Specifying Command Line Options with Indirect Files   44
  114.            6.6  Using the DOS=F000:32 Option     ..................   45
  115.            6.7  Video Display RAM above 640k    ...................   46
  116.            6.8  Video Adapter Bios ROMs     .......................   47
  117.  
  118.  
  119.  
  120.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  121.  
  122.  
  123.                         THE LAST BYTE MEMORY MANAGER (tm)
  124.  
  125.  
  126.            6.9  LASTBYTE.SYS and Expanded Memory     ..............   47
  127.            6.10  Fine-Tuning your Adapter Hardware Configuration      48
  128.  
  129.         CHAPTER 7 - USE WITH OTHER SOFTWARE     ...................   50
  130.            7.1  Microsoft's FASTOPEN and MODE programs    .........   50
  131.            7.2  Microsoft's SHARE program      ....................   50
  132.            7.3  Microsoft's MS-DOS 5.0      .......................   51
  133.               7.3.1  Using DEVICEHIGH and LOADHIGH     ............   52
  134.               7.3.2  Using HIGHDRVR and HIGHTSR     ...............   52
  135.            7.4  Microsoft's Windows 3.0      ......................   53
  136.               7.4.1  Modifying the Windows SYSTEM.INI File    .....   53
  137.               7.4.2  Positioning an EMS Page Frame    .............   54
  138.               7.4.3  "Unsupported Data Configuration"      ........   54
  139.               7.4.4  HIGHMEM and Windows 386 Enhanced Mode   ......   55
  140.               7.4.5  HIGHDISK and Windows 386 Enhanced Mode   .....   55
  141.            7.5  HyperWare's HyperDisk       .......................   55
  142.            7.6  J.P. Software's 4DOS      .........................   56
  143.            7.7  David Hamilton's BUFFIT      ......................   56
  144.            7.8  Charles Lazo's WAS      ...........................   57
  145.  
  146.         APPENDIX 1 - HOW TO REACH US     ..........................   58
  147.  
  148.         APPENDIX 2 - ACKNOWLEDGEMENTS        ......................   60
  149.  
  150.         APPENDIX 3 - CHIPSET LIMITATIONS       ....................   61
  151.  
  152.         APPENDIX 4 - LICENSED DISTRIBUTORS       ..................   63
  153.  
  154.         APPENDIX 5 - LIMITED WARRANTY       .......................   65
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  181.  
  182.  
  183.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)               4
  184.  
  185.  
  186.                         CHAPTER 1 - INTRODUCTION        
  187.  
  188.  
  189.         The  Last  Byte  Memory  Manager is a collection of software that
  190.         can  provide  up to 384k of additional memory to your computer in
  191.         the  upper  memory  area between 640k and 1 meg.  It does this by
  192.         using  left-over  shadow  ram  memory,  existing fixed read/write
  193.         (RAM)  memory, or by mapping expanded memory (EMS) pages into the
  194.         upper area.  
  195.  
  196.         With  The Last Byte Memory Manager, device drivers, terminate and
  197.         stay  resident  (TSR)  programs,  MS-DOS  disk  buffers,  and the
  198.         master  environment  can  be  moved up into upper memory, leaving
  199.         more   conventional   memory   available   for  your  application
  200.         programs.   Depending  on  your hardware, you may also be able to
  201.         extend  the  total  conventional  memory  from 640k to as much as
  202.         736k.  
  203.  
  204.         The  Last  Byte  Memory  Manager comes with utility programs that
  205.         use  upper  memory  to  create ram disks, print spoolers, command
  206.         line  recall (history) buffers, emulated expanded memory, and TSR
  207.         "markers"  (to  facilitate  TSR removal).  But best of all, these
  208.         utilities  can  even  use  disabled  shadow  ram  memory normally
  209.         hidden  behind the display buffer, read-only memories (ROMs), and
  210.         other adapter cards.  
  211.  
  212.  
  213.         1.1 Important Advantages        
  214.  
  215.         The  Last  Byte  Memory Manager offers six significant advantages
  216.         over other MS-DOS Upper Memory Managers: 
  217.  
  218.              o  The  Last  Byte  Memory Manager uses no conventional
  219.                 memory.  
  220.  
  221.              o  The  Last  Byte  Memory  Manager  will work with any
  222.                 processor  chip,  even the 8088 used in the original
  223.                 IBM  PC.   Many memory managers require a 386 cpu or
  224.                 better.  
  225.  
  226.              o  The  Last Byte Memory Manager does not use protected
  227.                 mode  software.   This  means that unlike those that
  228.                 do,   The   Last  Byte  Memory  Manager  is  totally
  229.                 compatible  with  any  protected  mode software, not
  230.                 just Microsoft Windows.  
  231.  
  232.              o  The  Last  Byte  Memory  Manager doesn't require any
  233.                 extended  memory.   Other  memory managers depend on
  234.                 the  processor's  ability  to  remap physical memory
  235.                 from above 1MB into the upper memory area.  
  236.  
  237.  
  238.  
  239.  
  240.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  241.  
  242.  
  243.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)               5
  244.  
  245.  
  246.              o  On  motherboards  that  use  one  of  the  supported
  247.                 memory   controller  chips,  The  Last  Byte  Memory
  248.                 Manager,  unlike  all  other MS-DOS memory managers,
  249.                 can  use  the unused shadow ram normally disabled by
  250.                 the  display  buffer,  ROMs  or adapter cards.  This
  251.                 gives  it  the  unique  ability  to  use all 384k of
  252.                 upper memory! 
  253.  
  254.              o  The  Last Byte Memory Manager does not slow down the
  255.                 performance  of  your computer, both because it does
  256.                 not  incur  the 5-10% execution overhead inherent in
  257.                 protected   mode,   and   because  it  uses  regular
  258.                 (full-speed)  memory.  (Some memory managers use the
  259.                 actual  EGA/VGA  graphics  buffer  as MS-DOS memory,
  260.                 but  the  display  buffer  memory  of  some  EGA/VGA
  261.                 adapter  cards  can  be  as much as six times slower
  262.                 than regular memory.)  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  301.  
  302.  
  303.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)               6
  304.  
  305.  
  306.                      CHAPTER 2 - SYSTEM REQUIREMENTS       
  307.  
  308.  
  309.         Fundamentally,  The Last Byte Memory Manager requires version 3.1
  310.         or  later of MS-DOS and some method of implementing memory in the
  311.         upper  memory  area  between  640k  and  1  meg.   Any  Intel (or
  312.         Intel-compatible)  processor  will  do,  including  the  original
  313.         Intel 8088 cpu.  No extended memory is required.  
  314.  
  315.  
  316.         2.1 Supported Hardware        
  317.  
  318.         To  install The Last Byte Memory Manager, your computer must have
  319.         any one of the following: 
  320.  
  321.              o Fixed  the 32-bit "Built In Memory" installed in some
  322.                 Compaq 386 machines), or 
  323.  
  324.              o  An  expanded memory board (EEMS, LIM 3.2 EMS, or LIM
  325.                 4.0 EMS), or 
  326.  
  327.                 ┌─────────────────────────────────────────────────┐
  328.                 │ NOTE: Using a LIM 3.2 EMS board is not advised  │ 
  329.                 │ as a method of providing upper memory.  It pro- │ 
  330.                 │ vides only 64k of upper memory and prevents ap- │ 
  331.                 │ plication software from using expanded memory.  │ 
  332.                 └─────────────────────────────────────────────────┘ 
  333.  
  334.              o  A  386sx,  386,  486,  or  486sx  processor  and the
  335.                 Microsoft  Windows  3.0 or DOS 5 versions of EMM386,
  336.                 or 
  337.  
  338.              o  One of the following shadow ram controller chips: 
  339.  
  340.         Chips and Technologies:
  341.  
  342.              82C212 - From the CS8221 NEAT (tm) chipset
  343.              82C222 - From the CHIPS/250 PS/2 50/60 chipset
  344.              82C230 - The PS/2 30 Single Chip Controller
  345.              82C235 - The SCAT (tm) Single Chip AT VLSI chip
  346.              82C241 - From the CS8223 LeAPset (tm) chipset
  347.              82C302 - From the CS8230 386/AT CHIPSet (tm)
  348.              82C307 - From the CS8231 386/AT CHIPSet (tm)
  349.              82C311 - From the CS8233 PEAK 386/AT CHIPSet (tm)
  350.              82C322 - From the CHIPS/280 PS/2 70/80 chipset
  351.              82C351 - From the CS82310 PEAK DM/386 AT CHIPSet (tm)
  352.              82C812 - From the CS8281 NEATsx (tm) chipset
  353.              82C836 - The SCATsx (tm) Single Chip AT VLSI chip
  354.              82C841 - From the CS8283 LeAPset-sx (tm) chipset
  355.  
  356.  
  357.  
  358.  
  359.  
  360.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  361.  
  362.  
  363.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)               7
  364.  
  365.  
  366.         ETEQ Microelectronics:
  367.  
  368.              ET82C491 - From the Cougar 386DX/486DX chipset
  369.  
  370.         Forex Computer Corporation:
  371.  
  372.              FRX36C300 - From the FRX36C300/200 Cache chipset
  373.  
  374.         Headland Technology (G2):
  375.  
  376.              HT12  - Single 286 AT Chip
  377.              HT21  - 286/386SX Advanced Memory Manager Chip
  378.              HT22  - 286/386SX Advanced Memory Manager Chip
  379.              HT103 - 286/386SX Advanced Memory Manager Chip
  380.              HT113 - 286/386SX Advanced Memory Manager Chip
  381.  
  382.         Intel Corporation:
  383.  
  384.              82343 - From the 82340SX Chip Set
  385.              82346 - From the 82340DX Chip Set
  386.              82359 - From the 82350DT EISA Chip Set
  387.  
  388.         OPTi Electronics:
  389.  
  390.              82C281 - From the Cache SX/AT chipset (w/posted write)
  391.              82C282 - From the Cache SX/AT chipset (w/o posted write)
  392.              82C283 - From the Block Interleave SX/AT chipset
  393.              82C382 - From the HiD/386 AT chipset
  394.              82C391 - From the 386WB PC/AT chipset
  395.              82C461 - From the Notebook PC/AT chipset
  396.              82C482 - From the HiB/486 AT chipset
  397.              82C491 - From the 486SXWB PC/AT chipset
  398.              82C493 - From the 486SXWB PC/AT chipset
  399.              82C495 - From the 486SXWB PC/AT chipset
  400.              82C496 - From the DXBB PC/AT chipset
  401.              82C682 - From the 386/486WB EISA chipset
  402.  
  403.         Sun Electronics (SUNTAC):
  404.  
  405.              ST62C202 - From the chipset 20 for 286
  406.              ST62C241 - From the chipset 24 for 386
  407.              ST62C251 - From the chipset 25 for 286 and 386sx
  408.  
  409.         Symphony Laboratories:
  410.  
  411.              SL82C361 - From the SL82C360 80386DX/SX chipset
  412.              SL82C461 - From the SL82C460 80486 chipset
  413.  
  414.  
  415.  
  416.  
  417.  
  418.  
  419.  
  420.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  421.  
  422.  
  423.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)               8
  424.  
  425.  
  426.         Texas Instruments:
  427.  
  428.              TACT82411  - The Snake Single-Chip AT Controller
  429.              TACT82S411 - The Snake+ Single-Chip AT Controller
  430.  
  431.         United Microelectronics Corporation (UMC):
  432.  
  433.              UM82C212 - From the UM82C210 386SX/286 AT Chip Set
  434.              UM82C481 - From the UM82C480 50Mhz 80486 Chip Set
  435.  
  436.              ┌─────────────────────────────────────────────────┐
  437.              │ NOTE: The UM82C212 is indistinguishable from    │ 
  438.              │ the Chip & Technologies 82C212.  CHIPSET and    │ 
  439.              │ LASTBYTE.SYS will identify it as the latter.    │ 
  440.              └─────────────────────────────────────────────────┘ 
  441.  
  442.         VLSI Technology:
  443.  
  444.              VL82C202 - PC/AT-Compatible High Speed Memory Controller
  445.              VL82C310 - From the SCAMP 286/386sx Chip Set
  446.              VL82C311 - From the SCAMP 286/386sx Chip Set
  447.              VL82C320 - From the TOPCAT 286/386sx Chip Set
  448.              VL82C330 - From the TOPCAT 386 DX Chip Set
  449.              VL82C486 - Single Chip, High Performance 486 PC/AT Controller
  450.  
  451.              ┌─────────────────────────────────────────────────┐
  452.              │ NOTE: There is a pin on the VLSI VL82C202 that  │
  453.              │ controls whether or not the shadow ram memory   │
  454.              │ has been relocated above 1 meg as extended      │
  455.              │ memory.  This pin is usually connected to a     │
  456.              │ jumper or DIP switch on the motherboard.  It    │
  457.              │ may be necessary to change the jumper or DIP    │
  458.              │ switch setting to work properly with this chip. │
  459.              └─────────────────────────────────────────────────┘ 
  460.  
  461.         Not  all  memory controller chips allow use of the entire 384k of
  462.         upper  memory.  Consult the appendix on "CHIPSET LIMITATIONS" for
  463.         further information.  
  464.  
  465.  
  466.         2.2 Checking Compatibility Using CHIPSET      
  467.  
  468.         CHIPSET  is  a program that simply checks to see if your computer
  469.         has  one  of the memory controllers required to use The Last Byte
  470.         Memory Manager.  
  471.  
  472.                 A>CHIPSET 
  473.  
  474.         CHIPSET  will identify the particular memory controller you have,
  475.         if  any.   If it can't find a memory controller, it will look for
  476.         fixed  memory  in the upper area or expanded memory as a means of
  477.  
  478.  
  479.  
  480.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  481.  
  482.  
  483.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)               9
  484.  
  485.  
  486.         installing  The  Last  Byte Memory Manager.  If it is successful,
  487.         it  will  give  you  the  option  of automatically linking to the
  488.         INSTALL  program  to  setup  for  use  of  The  Last  Byte Memory
  489.         Manager.  
  490.  
  491.         CHIPSET  and INSTALL automatically sense whether you have a color
  492.         or  monochrome  display  to  determine how to present data on the
  493.         screen.   However,  you  may  force  the mode by using one of the
  494.         /MONO, /COLOR, or /LCD command line options.  
  495.  
  496.         If  your  computer  has  one of the listed devices, then The Last
  497.         Byte  Memory  Manager  should  work  on  your  computer.  If your
  498.         computer  uses  another  kind of chipset, it may not be supported
  499.         for one of the following reasons: 
  500.  
  501.  
  502.              o  Some chipsets do not provide shadow ram support.  
  503.  
  504.                 Examples: VLSI Technologies 82C100 series 
  505.                           Western Digital chipsets 
  506.                           Texas Instruments TACT82300 series 
  507.                           Early Suntac chipsets (ST62BC001-6) 
  508.                           United Microelectronics Corp. UM82C231 
  509.  
  510.  
  511.              o  Some  chipsets  have  shadow ram, but it can only be
  512.                 put  into  either  write-only  mode (for copying rom
  513.                 contents  to  ram),  or  read-only  mode (to prevent
  514.                 accidental  writes into what's supposed to be a copy
  515.                 of rom).  
  516.  
  517.                 Examples: ACC Microelectronics chipsets 
  518.  
  519.  
  520.              o  The   Last   Byte   Memory   Manager   software   is
  521.                 table-driven,  making it relatively easy to adapt to
  522.                 different   memory   controller  architectures,  but
  523.                 there are limits!   
  524.  
  525.                 Examples: Zymos chipsets 
  526.                           United Micro. Corp. UM82C384, '388, '389 
  527.                           Forex Computer Corp. FRX36C100 
  528.                           Silicon Integrated   System   Corp.  (SIS)
  529.                 chipsets 
  530.  
  531.  
  532.              o  Some  memory  controllers  are designed so that they
  533.                 can   be   "locked"   at   the   end   of   software
  534.                 initialization,   requiring   a  hardware  reset  to
  535.                 unlock,  and  thus  preventing  The Last Byte Memory
  536.                 Manager from accessing the controller.  
  537.  
  538.  
  539.  
  540.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  541.  
  542.  
  543.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              10
  544.  
  545.  
  546.  
  547.                 Examples: Intel 82335, 82335SX 
  548.  
  549.  
  550.         Some  of these chips, however, have hardware EMS support and thus
  551.         many  of  their  motherboards  come  with  an  EMS  device driver
  552.         designed  specifically  to take advantage of this capability.  So
  553.         in  many  cases,  you can install this driver first, and then The
  554.         Last  Byte  Memory  Manager can use it to manage the upper memory
  555.         area.  
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562.  
  563.  
  564.  
  565.  
  566.  
  567.  
  568.  
  569.  
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  601.  
  602.  
  603.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              11
  604.  
  605.  
  606.                       CHAPTER 3 - DISTRIBUTION FILES       
  607.  
  608.  
  609.         Version  2.02  of  The  Last  Byte Memory Manager consists of the
  610.         following  distribution  files.  Feel free to upload this package
  611.         to   any   bulletin  board,  but  please  be  sure  all  original
  612.         (unmodified) distribution files are included in the upload.  
  613.  
  614.         CHIPSET.EXE     A program to test your computer for compati-
  615.                         bility with The Last Byte Memory Manager.
  616.  
  617.         CLOCK.EXE       A TSR program to display the current time in the
  618.                         upper left-hand corner of the screen.  (Requires
  619.                         ANSI.SYS.)
  620.  
  621.         HIGHAPND.EXE    A program to enable/disable an extension of conven-
  622.         HIGHAPND.SYS    tional memory beyond 640k up to 704k or even 736k,
  623.                         depending on your hardware configuration.
  624.  
  625.         HIGHBFRS.EXE    A program to put the MS-DOS 3.xx disk buffers
  626.                         (i.e., as specified in the "BUFFERS=" command
  627.                         of CONFIG.SYS) in upper memory.
  628.  
  629.         HIGHDISK.SYS    A device driver that creates a ram disk in
  630.                         upper memory.
  631.  
  632.         HIGHDRVR.SYS    A device driver used to load other device 
  633.                         drivers into upper memory.
  634.  
  635.         HIGHEMS3.SYS    A pair of device drivers that emulate expanded
  636.         HIGHEMS4.SYS    memory in upper memory.
  637.  
  638.         HIGHENV.EXE     A program to move the master environment from
  639.                         conventional memory to upper memory.
  640.  
  641.         HIGHFILE.EXE    A program to implement the DOS "FILES=" option
  642.                         using upper memory rather than conventional
  643.                         memory.
  644.  
  645.         HIGHHOLE.EXE    A program to locate empty space in shadowed ROMs
  646.                         that can be converted to free High-DOS memory.
  647.  
  648.         HIGHKEY.EXE     A command line recall editor similar to the DOS 5
  649.                         DOSKEY program, but which can store the command
  650.                         line history in bank-switch memory.
  651.  
  652.         HIGHMARK.EXE    A program to mark TSR's so that they may be
  653.                         removed from upper memory at a later time.
  654.  
  655.         HIGHMEM.EXE     A program to display a map of upper memory usage.
  656.  
  657.  
  658.  
  659.  
  660.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  661.  
  662.  
  663.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              12
  664.  
  665.  
  666.         HIGHRSVD.EXE    A pair of utilities to help control the allocation
  667.         HIGHRSVD.SYS    of upper memory.
  668.  
  669.         HIGHSPLR.EXE    A program to create a printer spooler in upper
  670.                         memory.
  671.  
  672.         HIGHTSR.EXE     A program to load TSR's into upper memory.
  673.  
  674.         HIGHUMM.DOC     A device driver that application programmers may
  675.         HIGHUMM.SYS     use to access upper memory from their own pro-
  676.                         grams.  (For a detailed specification of the soft-
  677.                         ware interface, see the information in the file
  678.                         HIGHUMM.DOC.)
  679.  
  680.         HIGHUNDO.EXE    A program to remove TSR's (and their associated
  681.                         mark) that have been previously marked with
  682.                         HIGHMARK.
  683.  
  684.         INSTALL.EXE     A program to automatically create or modify your
  685.                         CONFIG.SYS and AUTOEXEC.BAT files for use with
  686.                         The Last Byte Memory Manager.
  687.  
  688.         LASTBYTE.DOC    This text file.
  689.  
  690.         LASTBYTE.SYS    A device driver that must be loaded before any
  691.                         other software of The Last Byte Memory Manager.
  692.  
  693.         LICENSE.EXE     A program to install your name and personal
  694.                         access key for full operation of LASTBYTE.SYS.
  695.  
  696.         ORDERFRM.DOC    A text file containing individual and site
  697.                         license order forms.
  698.  
  699.         TLBMM.EXE       A program that returns a non-zero errorlevel
  700.                         if The Last Byte Memory Manager is not
  701.                         installed.  (Useful in .BAT files.)
  702.  
  703.         WHATSNEW.120    A text file describing changes since the
  704.                         previous version.
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  721.  
  722.  
  723.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              13
  724.  
  725.  
  726.                        CHAPTER 4 - GETTING STARTED       
  727.  
  728.  
  729.         The  first  thing  to  do is to be sure that The Last Byte Memory
  730.         Manager  will  work  on your computer.  You can do this by simply
  731.         running  the program called CHIPSET.  If successful, it will then
  732.         ask  you  if  you would like to run the INSTALL program to create
  733.         or  modify  your  CONFIG.SYS  and AUTOEXEC.BAT files for use with
  734.         The  Last  Byte  Memory  Manager.   If  you  prefer,  you can run
  735.         INSTALL and it will automatically run CHIPSET for you.  
  736.  
  737.  
  738.         4.1 Testing LASTBYTE.SYS HIGHDRVR.SYS and HIGHTSR.EXE     
  739.  
  740.         To  install The Last Byte Memory Manager on a floppy diskette for
  741.         testing, perform the following three steps: 
  742.  
  743.              Step 1:  Use  the  MS-DOS  FORMAT  command  with the /S
  744.                       option  to  prepare  a  bootable  floppy disk.
  745.                       You will need this in step 2.  
  746.  
  747.              Step 2:  Run  the  CHIPSET program.  If it succeeds, it
  748.                       will  ask  you "Do you want to run the INSTALL
  749.                       program  now?".  Answer yes.  When it displays
  750.                       the  first  screen  of  the  INSTALL  program,
  751.                       select   the   first   option,   "Creating   a
  752.                       demonstration   diskette"   and   follow   the
  753.                       prompts.  
  754.  
  755.              Step 3:   Once  you  have  created  your  demonstration
  756.                       diskette,  press  Ctrl-Alt-Del  to reboot your
  757.                       computer from the diskette.  
  758.  
  759.         If  everything  goes  ok,  during  the  boot you'll briefly see a
  760.         sign-on box that looks something like the following: 
  761.  
  762.  
  763.  
  764.  
  765.  
  766.  
  767.  
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  781.  
  782.  
  783.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              14
  784.  
  785.  
  786.         ╔═══════════════════════════════════════════════════════════════════╗
  787.         ║         THE LAST BYTE MEMORY MANAGER (tm) Version 2.02a           ║
  788.         ║ Copyright (C) 1990-92, Key Software Products, All Rights Reserved ║
  789.         ║                   Licensed for EVALUATION ONLY                    ║
  790.         ╟───────────────────────────────────────────────────────────────────╢
  791.         ║         25.0 Mhz 80386 with Chips & Technologies 82C302C          ║
  792.         ╟───────────────────────────────────────────────────────────────────╢
  793.         ║  Address Range  Size    Width    Bandwidth    Description         ║
  794.         ║   00000-9FFFF  640 KB  32 bits  38.0 MB/Sec   Conventional Memory ║
  795.         ║   A0000-FFFFF  384 KB  32 bits  38.0 MB/Sec   Shadow Ram Memory   ║
  796.         ║   A0000-AFFFF   64 KB  16 bits   3.1 MB/Sec   VGA Graphics Buffer ║
  797.         ║   B8000-BFFFF   32 KB  16 bits   3.1 MB/Sec   VGA Color Text Bfr  ║
  798.         ║   C0000-C7FFF   32 KB  16 bits   3.1 MB/Sec   VGA Adapter Bios    ║
  799.         ║   C8000-CB7FF   14 KB   8 bits   1.3 MB/Sec   Fixed Disk Bios     ║
  800.         ║   CB800-CBFFF    2 KB   8 bits   1.3 MB/Sec   Fixed Disk Ram      ║
  801.         ║   F0000-FFFFF   64 KB  16 bits   3.1 MB/Sec   AMI Bios (03/01/90) ║
  802.         ╟───────────────────────────────────────────────────────────────────╢
  803.         ║ Conv:640k High-DOS:32k Bank-Switch:32k Shadowed:96k Excluded:224k ║
  804.         ╟───────────────────────────────────────────────────────────────────╢
  805.         ║ The Last Byte Memory Manager is a trademark of Key Software Prod. ║
  806.         ╚═══════════════════════════════════════════════════════════════════╝
  807.  
  808.         If  your  computer  stops  before displaying the entire box shown
  809.         above,  or  if  it  fails to operate properly after booting, this
  810.         may  be  because  The Last Byte Memory Manager failed to identify
  811.         one  of  your  installed  adapters  that uses some portion of the
  812.         upper  memory  address  space.   If this happens, you'll probably
  813.         need  to  use  an EXCLUDE option on the LASTBYTE.SYS command line
  814.         to  manually  disable  the corresponding region(s) where conflict
  815.         occurs.   To  temporarily get around this problem, you can reboot
  816.         and  manually  bypass  all  The  Last  Byte Memory Manager device
  817.         drivers  and  TSR's by simultaneously holding down the <alt> key,
  818.         the  <ctrl>  key,  and either the <leftshift> or <rightshift> key
  819.         during the boot sequence.  
  820.  
  821.         After  AUTOEXEC.BAT  is  finished, the screen will be filled with
  822.         the  output  of  the HIGHMEM program and the current time will be
  823.         displayed  in  inverse  video in the upper left-hand corner.  The
  824.         latter  verifies  that HIGHTSR has successfully loaded CLOCK into
  825.         upper memory and that ANSI.SYS is installed and operating.  
  826.  
  827.         To  exit  from  HIGHMEM,  simply press the Esc key.  If you like,
  828.         you  can  run  HIGHUNDO  to remove the CLOCK program from memory,
  829.         and then HIGHMEM again to see that it has been removed.  
  830.  
  831.         Once  you  are  convinced  that  The  Last Byte Memory Manager is
  832.         working  satisfactorily,  you may install it on your hard disk by
  833.         making drive C: the current drive by entering 
  834.  
  835.                 C: 
  836.  
  837.  
  838.  
  839.  
  840.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  841.  
  842.  
  843.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              15
  844.  
  845.  
  846.         and rerunning CHIPSET or INSTALL.  
  847.  
  848.  
  849.         4.2 Mapping Upper Memory with HIGHMEM     
  850.  
  851.         Depending  on  what  adapter  cards you have installed, HIGHMEM's
  852.         output should look something like that shown below.  
  853.  
  854.  
  855.       HIGHMEM v2.02a (C) Key Software Products 1990-92. All Rights Reserved.
  856.  
  857.       MCB  Hex Address Description [Type] <Mark> High-DOS Bnk-Swtch  Total
  858.       ──── ─────────── ───────────────────────── ──────── ───────── ───────
  859.       B000 A0000-AFFFF Reserved Memory Group:                       
  860.       B79D A0000-A042F ╠═TSR Marker          <1>             1,072  
  861.       B002 A0000-A042F ║ └─8-bit EGA Graphics Buffer                  1,072
  862.       B79B A0430-A7FFF ╠═8-bit EGA Graphics Buffer        [ 31,696] [31,696]
  863.       B004 A8000-AFFFF ╚═8-bit EGA Graphics Buffer                   32,768
  864.       B006 B0070-B10CF ANSI           [DEV]        4,192              4,192
  865.       B10D B10E0-B112F CLOCK          [ENV]  <1>      80                 80
  866.       B113 B1140-B12EF CLOCK          [TSR]  <1>     432                432
  867.       B12F B1300-B79AF [∙∙∙Free∙∙∙]             [ 26,288]           [26,288]
  868.       B79F B7A00-B7EFF LASTBYTE       [DEV]        1,280              1,280
  869.       B7FE B8000-FFFFF Reserved Memory Group:                       
  870.       B7F0 B8000-BFFFF ╠═8-bit EGA Color Text Buffer                 32,768
  871.       B7F2 C0000-C3FFF ╠═Shadowed 8-bit EGA Bios Rom                 16,384
  872.       B7F4 C4000-C7FFF ╠═Excluded Block                              16,384
  873.       B7F6 C8000-CB7FF ╠═8-bit Fixed Disk Adapter Bios               14,336
  874.       B7F8 CB800-CBFFF ╠═8-bit Fixed Disk Adapter Ram                 2,048
  875.       B7FA CC000-EFFFF ╠═Excluded Block                             147,456
  876.       B7FC F0000-FFFFF ╚═Shadowed 16-bit AMI Main Bios               65,536
  877.                                                  ───────   ───────  ───────
  878.                             Upper Memory In Use:   5,984     1,072  334,736
  879.                             [Free Upper Memory]:  26,288    31,696   57,984
  880.                                    MCB Overhead:     496       n/a      496
  881.                                                  ───────   ───────  ───────
  882.                              Total Upper Memory:  32,768    32,768  393,216
  883.  
  884.  
  885.         The  column  labelled  "Bank-Switch"  shows  which entries can be
  886.         used  as  bank-switch  memory  for  a  ram disk, a print spooler,
  887.         emulated EMS memory, or TSR markers.  
  888.  
  889.         Numbers  enclosed in brackets (e.g., "[ 26,128]") refer to memory
  890.         that  is  available for use.  Once you have licensed your copy of
  891.         The  Last  Byte  Memory Manager, the "Excluded Block" shown above
  892.         would  be  added  to the free High-DOS memory pool, and the other
  893.         entries  labelled  "EGA  ...  Buffer"  would be added to the free
  894.         bank-switch memory pool.  
  895.  
  896.         The  column  labelled "Mark" is used in conjunction with HIGHMARK
  897.  
  898.  
  899.  
  900.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  901.  
  902.  
  903.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              16
  904.  
  905.  
  906.         and HIGHUNDO.  
  907.  
  908.  
  909.         4.3 Running the LICENSE Program      
  910.  
  911.         The   Last   Byte  Memory  Manager  is  distributed  as  a  fully
  912.         functional  set  of  software.  In its original form, you will be
  913.         able to use all the features, but with three restrictions: 
  914.  
  915.  
  916.              o  The  amount of upper memory available to you will be
  917.                 limited  to  32k  of High-DOS memory and another 32k
  918.                 of Bank-Switch memory, and 
  919.  
  920.              o  The  maximum  number  of  device drivers and/or TSRs
  921.                 will be limited to 2.  
  922.  
  923.              o  The HOLE option of LASTBYTE.SYS is not available.  
  924.  
  925.  
  926.         Access  to  the rest of upper memory requires that you purchase a
  927.         personal  eight-character  access  key  and  install it using the
  928.         LICENSE  program.   The  access key may be obtained directly from
  929.         Key  Software  Products  or  one  of  the authorized distributors
  930.         listed  at the end of this document.  The LICENSE program must be
  931.         run  on the same computer on which you intend to install The Last
  932.         Byte Memory Manager.  
  933.  
  934.         LICENSE   automatically  senses  whether  you  have  a  color  or
  935.         monochrome  display  to  determine  how  to  present  data on the
  936.         screen.   However, you may force the mode using one of the /MONO,
  937.         /COLOR, or /LCD command line options.  
  938.  
  939.         Once  you  have  licensed  your  copy  of  LASTBYTE.SYS  you will
  940.         immediately  have  access  to the rest of upper memory.  No other
  941.         files,  diskettes, or manuals need to be ordered.  We do not send
  942.         out  a  new  diskette  or printed manual when you order an access
  943.         key;  otherwise  the  price  would  have  to be greater.  You may
  944.         obtain  your  access  key  by  mail by filling out the order form
  945.         (included  in  the  file  ORDERFRM.DOC)  and  mailing it with the
  946.         calculated  amount to Key Software Products, or by contacting one
  947.         of  our  distributors.   If  you  order by mail, be sure to print
  948.         your  name  clearly  - it will be displayed in the sign-on screen
  949.         of LASTBYTE.SYS and is used to determine your access key.  
  950.  
  951.  
  952.  
  953.  
  954.  
  955.  
  956.  
  957.  
  958.  
  959.  
  960.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  961.  
  962.  
  963.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              17
  964.  
  965.  
  966.                     CHAPTER 5 - DETAILED DESCRIPTIONS       
  967.  
  968.  
  969.         A  complete  detailed  description of the command line syntax and
  970.         options  of  each  device  driver and utility program in The Last
  971.         Byte  Memory  Manager  is  provided below.  With the exception of
  972.         LASTBYTE.SYS   which   comes   first,   they   are  organized  in
  973.         alphabetical order for ease of reference.  
  974.  
  975.  
  976.         5.1 LASTBYTE.SYS         
  977.  
  978.         During  initialization,  LASTBYTE.SYS  scans upper memory looking
  979.         for  Bios  ROMs,  display  ram, and adapter cards that occupy the
  980.         upper  memory  area.   The  unoccupied  portion  of  upper memory
  981.         defaults  to  High-DOS memory (for device drivers and TSR's).  If
  982.         your  computer uses one of the supported memory controller chips,
  983.         the  occupied  portion  of  the upper memory area will default to
  984.         Bank-Switch  memory  that can be made accessible for Ram disks, a
  985.         Print Buffer, emulated EMS memory, etc.  
  986.  
  987.         These  defaults  can  be  modified  by  the  use  of command line
  988.         options.    There   are   several   command   line   options  for
  989.         LASTBYTE.SYS.  Many of these use a format like: 
  990.  
  991.                 <keyword>=<base>:<size> 
  992.  
  993.         where  <keyword>  is  one  of  the  option  keywords  and  may be
  994.         abbreviated   by   its  first  letter,  <base>  is  a  four-digit
  995.         hexadecimal  segment  address  in  the  range  A000  to FC00, and
  996.         <size> is a decimal number in kilobytes.  
  997.  
  998.         There are two restrictions on these options: 
  999.  
  1000.              o  The  base must be exactly 4 hexadecimal digits, must
  1001.                 lie  at  or  above  A000,  and must be a multiple of
  1002.                 0020  (512  bytes).   (For  APPEND,  the  base  must
  1003.                 always be A000, or may be omitted.) 
  1004.  
  1005.              o  The size must be in the range 1-384 kb.  
  1006.  
  1007.         The  "multiple  of 0020" requirement for the base is necessary to
  1008.         be  consistent  with  the  way  that The Last Byte Memory Manager
  1009.         organizes  high  memory  during  initialization.   However,  this
  1010.         requirement  is  often  affected by the coarser resolution of the
  1011.         memory controllers: 
  1012.  
  1013.         The  upper area is partitioned into blocks.  Some controllers use
  1014.         16k  blocks,  some use 32k blocks, and some use 64k blocks.  Each
  1015.         block  must  be either totally enabled or disabled.  I.e., if any
  1016.         part  of  a  block's address space is disabled by the presence of
  1017.  
  1018.  
  1019.  
  1020.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  1021.  
  1022.  
  1023.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              18
  1024.  
  1025.  
  1026.         an  adapter  card,  the  entire  block  of memory is disabled and
  1027.         cannot be made available as High-DOS Memory.  
  1028.  
  1029.              APPEND=<base>:<size>  -or-  APPEND=<size> 
  1030.  
  1031.                   Allocates  a  region of upper memory for appending
  1032.                   to   the   end   of   conventional   memory,  thus
  1033.                   increasing  it  beyond  640k.   The  memory is NOT
  1034.                   added  until  it  is  enabled  with  HIGHAPND.  If
  1035.                   <base>  is  used,  it must be A000.  (Note: <size>
  1036.                   is  limited  to  16k  in the unlicensed version so
  1037.                   that   some   High-DOS   memory   will   still  be
  1038.                   available.) 
  1039.  
  1040.                   For  example,  to  force  the  64k  address  range
  1041.                   starting  at  segment  A000  to be appended to the
  1042.                   end  of  the  640k  of  Conventional  memory,  the
  1043.                   proper option syntax would be: 
  1044.  
  1045.                                       APPEND=64
  1046.  
  1047.              BANKSWITCH=<base>:<size> 
  1048.  
  1049.                   Forces   a  region  of  upper  memory  that  would
  1050.                   normally  be  used  as  High-DOS memory to be made
  1051.                   available as Bank-Switch memory.  
  1052.  
  1053.                   ┌─────────────────────────────────────────────────┐
  1054.                   │ This option requires a memory controller chip.  │
  1055.                   └─────────────────────────────────────────────────┘ 
  1056.  
  1057.              CACHE  -or-  CACHE=<kbytes> 
  1058.  
  1059.                   Forces  LASTBYTE.SYS  to  think  that  there  is a
  1060.                   cache  between  the CPU and main memory and to set
  1061.                   its  size.   (This  has  nothing  to  do with disk
  1062.                   caching!)   This option is not normally necessary;
  1063.                   LASTBYTE.SYS  automatically  detects  the presence
  1064.                   of  a  cache  and  its size.  If you use the CACHE
  1065.                   option   without  specifying  the  size,  it  will
  1066.                   default to 512k.  
  1067.  
  1068.                   Activating  bank-switch memory causes the contents
  1069.                   of  a  cache  (if  present) to be invalid; this is
  1070.                   known  as a "cache coherency" problem.  If a cache
  1071.                   is   detected  during  installation,  LASTBYTE.SYS
  1072.                   checks  to see if any portion of the upper address
  1073.                   space  is cached.  If not, then no cache coherency
  1074.                   problem exists.  
  1075.  
  1076.                   If  the  upper  address  space is cached, however,
  1077.  
  1078.  
  1079.  
  1080.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  1081.  
  1082.  
  1083.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              19
  1084.  
  1085.  
  1086.                   LASTBYTE.SYS  will flush the cache on every access
  1087.                   to  Bank-Switch  memory  in  order  to prevent the
  1088.                   cache  from providing invalid data to the CPU.  On
  1089.                   a   486  it  does  this  by  executing  a  special
  1090.                   instruction  that  resets  the  cache.   On  other
  1091.                   processors,  the  cache  is  flushed by filling it
  1092.                   from  low  memory.   In  the latter case, the size
  1093.                   value  discussed  above  is  used to determine how
  1094.                   much to fill.  
  1095.  
  1096.              DOS=<base>:<size> 
  1097.  
  1098.                   Forces   a  region  of  upper  memory  that  would
  1099.                   normally  be used as Bank-Switch memory to be made
  1100.                   available as High-DOS memory.  
  1101.  
  1102.              EXCLUDE=<base>:<size> 
  1103.  
  1104.                   Forces  a  region  of  upper memory unavailable as
  1105.                   either High-DOS or Bank-Switch memory.  
  1106.  
  1107.              HOLE=<base>:<size> 
  1108.  
  1109.                   Creates  a  "hole"  of free High-DOS memory within
  1110.                   the  address space of a ROM that is shadowed.  Use
  1111.                   the  HIGHHOLE  program  to  determine  where these
  1112.                   holes  are  located,  and the corresponding values
  1113.                   of <base> and <size>.  
  1114.  
  1115.                   ┌─────────────────────────────────────────────────┐
  1116.                   │ NOTES: (1) The HOLE option is not available in  │
  1117.                   │ the unlicensed version of LASTBYTE.SYS. (2) The │
  1118.                   │ <base> and <size> parameters of the HOLE option │
  1119.                   │ are different from other options: <size> is in  │
  1120.                   │ bytes and must be a multiple of 16; <base> may  │
  1121.                   │ be any hexadecimal value from A000 to FFFF.     │
  1122.                   └─────────────────────────────────────────────────┘
  1123.  
  1124.              KEY=<filespec> 
  1125.  
  1126.                   When  you  register  The Last Byte Memory Manager,
  1127.                   you   are   given  an  access  key  that  must  be
  1128.                   installed  by  running  the LICENSE program.  This
  1129.                   program  records  your  name and corresponding key
  1130.                   in   a   file  called  LASTBYTE.KEY  in  the  root
  1131.                   directory  of your boot drive.  LASTBYTE.SYS looks
  1132.                   for  that file in the same place, but you may move
  1133.                   the  file  to  some other location on your disk as
  1134.                   long   as   you   use   the  KEY  option  to  tell
  1135.                   LASTBYTE.SYS  where  to  find it.  For example, if
  1136.                   you   move  LASTBYTE.KEY  to  a  directory  called
  1137.  
  1138.  
  1139.  
  1140.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  1141.  
  1142.  
  1143.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              20
  1144.  
  1145.  
  1146.                   D:\TLBMM,  then the corresponding KEY option would
  1147.                   be KEY=D:\TLBMM\LASTBYTE.KEY.  
  1148.  
  1149.  
  1150.              MOVE=VIDEOBIOS 
  1151.  
  1152.                   Tries  to  move  an  EGA  or  VGA bios to a better
  1153.                   location  within  the  available  upper  memory in
  1154.                   order to reduce fragmentation of free memory.  
  1155.  
  1156.              MOVE=MAINBIOS[,ADDHOLES] 
  1157.  
  1158.                   Tries  to  move the main bios to a better location
  1159.                   within  the  available  upper  memory  in order to
  1160.                   reduce     fragmentation     of    free    memory.
  1161.                   MOVE=MAINBIOS,ADDHOLES  will create seven holes in
  1162.                   the  residual  8k left at FE00 for a total of more
  1163.                   than 3k.  
  1164.  
  1165.              MOVE=OVERLAY 
  1166.  
  1167.                   This  option  is  for  chipsets  in which the main
  1168.                   bios  shadow  ram  cannot be made read/write (OPTi
  1169.                   and   ETEQ).    This   option  puts  that  ram  in
  1170.                   write-only  mode,  copies the video bios on top of
  1171.                   the   main   bios   initialization   code  at  the
  1172.                   beginning  of  the  bios,  then returns the ram to
  1173.                   read-only  mode.   Then  the old video bios region
  1174.                   is converted to usable Hi-DOS memory.  
  1175.  
  1176.              MOVE=XBDA 
  1177.  
  1178.                   This  option relocates the Extended Bios Data Area
  1179.                   (XBDA),  if  it  exists,  into  Upper Memory.  The
  1180.                   XBDA   is  usually  1k  reserved  at  the  top  of
  1181.                   conventional  memory  by  the  main Bios.  Not all
  1182.                   machines   use   an   XBDA,   but  if  it  exists,
  1183.                   LASTBYTE.SYS  will  report  639k  of  Conventional
  1184.                   Memory  instead  of 640k, and HIGHAPND will refuse
  1185.                   to  append  any  memory.   Some  machines  may not
  1186.                   operate  properly  with  a  relocated XBDA, so use
  1187.                   this   option   with  caution.   (Note  that  some
  1188.                   computer  viruses  also  "steal"  the  top  1k  of
  1189.                   memory.) 
  1190.  
  1191.  
  1192.  
  1193.  
  1194.  
  1195.  
  1196.  
  1197.  
  1198.  
  1199.  
  1200.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  1201.  
  1202.  
  1203.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              21
  1204.  
  1205.  
  1206.              PHYSICAL=<memorycontroller>[,OVERRIDE][,NOEMS] 
  1207.  
  1208.                   where  <memorycontroller>  is  determined  by  the
  1209.                   CHIPSET program.  
  1210.  
  1211.                   The OVERRIDE suboption: 
  1212.  
  1213.                   Many  memory  controller chips can relocate all or
  1214.                   part  of  shadow  ram  to  the  top  of (extended)
  1215.                   memory.   If  LASTBYTE.SYS  fails  to install with
  1216.                   the   error   message:   "Shadow   Ram  memory  is
  1217.                   relocated/remapped",   try   adding  the  OVERRIDE
  1218.                   suboption  to  the PHYSICAL option.  This disables
  1219.                   any  shadow  ram relocation that may be in effect,
  1220.                   regardless   of   your   CMOS  configuration  menu
  1221.                   setup.   The CMOS setup menu of your BIOS may also
  1222.                   provide  an option to disable relocation directly,
  1223.                   but  there  are  some  that  determine  whether to
  1224.                   relocate  or  not  based  on  other  configuration
  1225.                   options.   
  1226.  
  1227.                   The NOEMS suboption: 
  1228.  
  1229.                   May  be  used in conjunction with PHYSICAL=LIM4EMS
  1230.                   or  EEMS  to  use  the  64k page frame as High-DOS
  1231.                   Memory;   must   be   used   in  conjunction  with
  1232.                   PHYSICAL=LIM3EMS.    Doing   so   disables   other
  1233.                   (normal) use of all expanded memory.  
  1234.  
  1235.              RESTRICT=<ab>,<cd>,<ef> 
  1236.  
  1237.                   Address  lines  A15  and  A16  are  not latched in
  1238.                   hardware  design of the AT bus.  As a consequence,
  1239.                   some  16-bit  adapter cards do not properly decode
  1240.                   these   address   lines  within  the  narrow  time
  1241.                   constraints  imposed  by  the Address Latch Enable
  1242.                   (ALE)  signal, and will occassionally respond to a
  1243.                   memory  access  that  is  directed  at  some other
  1244.                   portion  of  the  address space.  Thinking that it
  1245.                   is  for  them, they force the transfer into 16-bit
  1246.                   mode  even  though the intended recipient requires
  1247.                   8-bit  mode,  and  thus cause erroneous data to be
  1248.                   transferred  to  the  bytes  in  the  odd-numbered
  1249.                   addresses.  
  1250.  
  1251.                   The  most  common  (and damaging) occurence occurs
  1252.                   during  the  8-bit  DMA transfers between a floppy
  1253.                   disk  drive  and  upper  memory  near  the address
  1254.                   space  occupied  by  an  offending  16-bit adapter
  1255.                   card.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  1261.  
  1262.  
  1263.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              22
  1264.  
  1265.  
  1266.                   Due  to organization of the address signals on the
  1267.                   AT  bus,  this  phenomena only occurs when the two
  1268.                   address  areas  are  within  the same 128k region.
  1269.                   There  are  three  such regions in the upper area:
  1270.                   A0000-BFFFF,    C0000-DFFFF,    and   E0000-FFFFF.
  1271.                   LASTBYTE.SYS  automatically senses the presence of
  1272.                   16-bit  adapter  cards  in  each  of  these  three
  1273.                   regions  and  records  this information within its
  1274.                   resident   image   for   use   by  its  utilities.
  1275.                   LASTBYTE.SYS  skips  this  test if it detects a PC
  1276.                   with  a  Micro  Channel  bus (like the PS/2) since
  1277.                   problem was corrected in its design.  
  1278.  
  1279.                   The  RESTRICT  option is provided to override this
  1280.                   automatic  detection  of 16-bit adapters.  Each of
  1281.                   the  three  arguments (one per 128k region) should
  1282.                   be  replaced  by  either "0" (indicating no 16-bit
  1283.                   adapters),  or  "1"  (indicating the presense of a
  1284.                   16-bit adapter).  
  1285.  
  1286.                   For   example,  the  option  RESTRICT=1,1,0  would
  1287.                   imply   that  one  or  more  16-bit  adapters  are
  1288.                   located  in  the  first  two 128k regions of upper
  1289.                   memory  (A000-DFFF),  so  that  when the /RESTRICT
  1290.                   option  of  HIGHDRVR,  HIGHTSR, HIGHUMM, HIGHEMS3,
  1291.                   and  HIGHEMS4 is used, only High-DOS memory in the
  1292.                   region  E000-FFFF  will be allocated.  This is the
  1293.                   default  for  HIGHBFRS, but may be disabled by use
  1294.                   of its /NORESTRICT option.  
  1295.  
  1296.              SHADOW=<base>:<size> 
  1297.  
  1298.                   The  Last  Byte  Memory Manager will automatically
  1299.                   copy  the  video  bios and main bios to shadow ram
  1300.                   if  they  aren't  already  shadowed.   However, it
  1301.                   will  not  do  so for other adapter ROMs.  This is
  1302.                   because  some  controllers  "hide"  a small RAM by
  1303.                   overlaying  it  in  a  portion of the same address
  1304.                   space  they  declare  as  being  filled  with ROM.
  1305.                   Such  a  RAM  is no longer accessible when the ROM
  1306.                   is  shadowed,  usually causing the adapter to stop
  1307.                   functioning.  
  1308.  
  1309.                   This  option  is  for  those  who want to forces a
  1310.                   region  of  memory  (presumably  ROM) to be copied
  1311.                   into  shadow  ram.   If other hardware is detected
  1312.                   outside  the specified region, but within the same
  1313.                   memory  controller block which conflicts with this
  1314.                   request,  a  corresponding  error  message will be
  1315.                   displayed    and    LASTBYTE.SYS   will   not   be
  1316.                   installed.  
  1317.  
  1318.  
  1319.  
  1320.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  1321.  
  1322.  
  1323.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              23
  1324.  
  1325.  
  1326.  
  1327.                   ┌─────────────────────────────────────────────────┐
  1328.                   │ This option requires a memory controller chip.  │
  1329.                   └─────────────────────────────────────────────────┘ 
  1330.  
  1331.              TEXT=n 
  1332.  
  1333.                   The  information  screen invoked by the "?" option
  1334.                   defaults  to  bright  white  on  blue  if  a color
  1335.                   display  is  active,  and  to  inverse  video if a
  1336.                   monochrome   monitor   is   active.   This  option
  1337.                   changes  the  default  to  'n',  where  n  is  the
  1338.                   hexadecimal  value  of  the attribute byte used to
  1339.                   paint the screen.  
  1340.  
  1341.              ? (A question mark) 
  1342.  
  1343.                   Causes  LASTBYTE.SYS  to erase the screen, display
  1344.                   a  summary  of  what  it finds in the upper memory
  1345.                   area,  and  pause for two seconds to give the user
  1346.                   an   opportunity  to  read  the  information.   To
  1347.                   freeze  this  display  for  a longer period, press
  1348.                   <Ctrl>-S;   then   to   continue  with  CONFIG.SYS
  1349.                   processing, press any key.  
  1350.  
  1351.  
  1352.         5.2 HIGHAPND.EXE and HIGHAPND.SYS       
  1353.  
  1354.         HIGHAPND.EXE  is  a  program that can only be used in conjunction
  1355.         with  the  APPEND  option  of  LASTBYTE.SYS.   HIGHAPND.SYS  is a
  1356.         device  driver  version  of  HIGHAPND.EXE.  Either can be used to
  1357.         append  some of the upper memory that begins at 640k onto the end
  1358.         of conventional memory (and also to return later to 640k).  
  1359.  
  1360.         Monochrome  (MDA),  Hercules,  and CGA display adapters don't use
  1361.         the  64k  region starting at A000, and so this memory can be used
  1362.         to  extend  conventional memory from 640k to 704k, provided there
  1363.         is  available  read/write  memory  in  this  area.   CGA  display
  1364.         adapters  also  don't  use  the next 32k either, and so CGA users
  1365.         may be able to extend conventional memory all the way to 736k.  
  1366.  
  1367.         EGA  and  VGA  display adapters have a 64k hi-resolution graphics
  1368.         display  buffer  that  is  located  at A000.  This buffer is only
  1369.         needed  when you are using only hi-resolution graphics.  When the
  1370.         display  is  in either text or low-resolution CGA graphics modes,
  1371.         this  memory  is  not  used,  and may be replaced (switched) with
  1372.         shadow  ram memory if available, or the display buffer itseld may
  1373.         be  used  to  extend conventional memory.  Since most EGA and VGA
  1374.         adapters  usually  don't use the 32k region at B000, you may even
  1375.         be able to extend conventional memory up to 736k.  
  1376.  
  1377.  
  1378.  
  1379.  
  1380.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  1381.  
  1382.  
  1383.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              24
  1384.  
  1385.  
  1386.         You  may either use HIGHAPND.SYS during CONFIG.SYS processing, as
  1387.         in: 
  1388.  
  1389.                 DEVICE=HIGHAPND.SYS ON  {Extends conv. memory beyond 640k}
  1390.                         . . .
  1391.                 DEVICE=HIGHAPND.SYS OFF {Resets conv. memory to 640k}
  1392.  
  1393.                 ╔═════════════════════════════════════════════════╗
  1394.                 ║ WARNING: HIGHAPND.SYS may not work properly     ║ 
  1395.                 ║ with some versions of MS-DOS; in such cases,    ║ 
  1396.                 ║ use HIGHAPND.EXE instead.  There is no benefit  ║ 
  1397.                 ║ to using HIGHDRVR.SYS to load HIGHAPND.SYS      ║ 
  1398.                 ║ because it never stays resident.                ║ 
  1399.                 ╚═════════════════════════════════════════════════╝
  1400.  
  1401.         or  use  HIGHAPND.EXE  during  AUTOEXEC.BAT processing (or at any
  1402.         time after the computer is booted), as in: 
  1403.  
  1404.                 A>HIGHAPND ON   {Extends conv. memory beyond 640k}
  1405.                         . . .
  1406.                 A>HIGHAPND OFF  {Resets conv. memory to 640k}
  1407.  
  1408.                 ╔═════════════════════════════════════════════════╗
  1409.                 ║ WARNING: HIGHAPND.EXE may not work properly     ║ 
  1410.                 ║ with DR DOS. In such cases, use HIGHAPND.SYS.   ║ 
  1411.                 ╚═════════════════════════════════════════════════╝
  1412.  
  1413.  
  1414.         Don't  forget  -  both  HIGHAPND.SYS and HIGHAPND.EXE require the
  1415.         use of an APPEND option on the LASTBYTE command line.  
  1416.  
  1417.         HIGHAPND  can  be  used  without  any  command  line  options  to
  1418.         determine  the  current size of conventional memory and the state
  1419.         of EGA/VGA hi-resolution graphics: 
  1420.  
  1421.                 A>HIGHAPND 
  1422.  
  1423.         You  can  put  these  commands  into  a  batch  file  to simplify
  1424.         switching  back  and  forth.   For example, if you want the extra
  1425.         memory  all  the  time  except  when you need hi-res graphics for
  1426.         Microsoft Windows, create a batch file like the following: 
  1427.  
  1428.                 @ECHO OFF 
  1429.                 HIGHAPND OFF 
  1430.                 WIN %1 %2 
  1431.                 HIGHAPND ON 
  1432.  
  1433.         HIGHAPND  will automatically disable any EGA or VGA hi-resolution
  1434.         graphics   capability   whenever  conventional  memory  has  been
  1435.         extended  beyond  640k.   This  makes  software  that attempts to
  1436.         sense  what  type  of display adapter is installed think that you
  1437.  
  1438.  
  1439.  
  1440.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  1441.  
  1442.  
  1443.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              25
  1444.  
  1445.  
  1446.         have  only  a  CGA  adapter.   Later,  when you need the graphics
  1447.         capability,   you   can   disable   the   memory   extension  and
  1448.         hi-resolution graphics will be automatically re-enabled.  
  1449.  
  1450.         If  you  have  hi-res  graphics  disabled  and run a program that
  1451.         tries  to use hi-res graphics without first sensing for an EGA or
  1452.         VGA  adapter,  LASTBYTE.SYS  will  notice  the conflict, issue an
  1453.         error   message,   and  terminate  the  program.   Some  programs
  1454.         redirect  a  few  interrupts during their initialization and then
  1455.         restore  them  before termination.  LASTBYTE.SYS's termination of
  1456.         graphics  programs  doesn't know how to restore these interrupts,
  1457.         so  in  some cases you may have to reboot the computer.  In other
  1458.         words,  if  you  experience this kind of program termination with
  1459.         an  application  program, it's best to reboot and prepare a batch
  1460.         file (as shown above) to run the program.  
  1461.  
  1462.         HIGHAPND  provides  more  detailed  control  over this protection
  1463.         through  the  /HIRESGFX  option  as described below.  This may be
  1464.         helpful,  for  example,  with software that uses the 43 (50) line
  1465.         text  mode of the EGA (VGA) adapter.  (The setting of this option
  1466.         is only meaningful when HIGHAPND ON is in effect.) 
  1467.  
  1468.              /HIRESGFX=TRAPPED 
  1469.  
  1470.                   Disables   all  EGA/VGA  high-resolution  graphics
  1471.                   functions  provided  by  video  BIOS interrupt 10h
  1472.                   and   makes   programs  think  a  CGA  adapter  is
  1473.                   installed.  (This is the default.) 
  1474.  
  1475.              /HIRESGFX=SENSED 
  1476.  
  1477.                   Disables   all  EGA/VGA  high-resolution  graphics
  1478.                   functions  provided  by  video BIOS interrupt 10h,
  1479.                   but  does  let  programs  sense the presence of an
  1480.                   EGA or VGA adapter.  
  1481.  
  1482.              /HIRESGFX=ALLOWED 
  1483.  
  1484.                   Allows  all  video  BIOS  interrupt  10h  function
  1485.                   calls,  even  if  they  might  use the 64k EGA/VGA
  1486.                   graphics display buffer at A000-AFFF.  
  1487.  
  1488.                               Technical Note      
  1489.  
  1490.              HIGHAPND  requires  either  a memory controller chip or
  1491.              an   EGA   or  VGA  display  adapter.   If  the  memory
  1492.              controller  chip  can enable shadow ram memory at A000,
  1493.              then   shadow   ram  memory  will  be  used  to  extend
  1494.              conventional  memory;  otherwise, HIGHAPND will convert
  1495.              the  graphics  display buffer of the EGA or VGA display
  1496.              adapter into an extension of conventional memory.  
  1497.  
  1498.  
  1499.  
  1500.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  1501.  
  1502.  
  1503.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              26
  1504.  
  1505.  
  1506.  
  1507.  
  1508.         5.3 HIGHBFRS.EXE (MS-DOS 3 only)      
  1509.  
  1510.                 ╔═════════════════════════════════════════════════╗
  1511.                 ║ WARNING:  Placing MS-DOS buffers in high memory ║
  1512.                 ║ can result in the loss of data.  I.e., it can   ║
  1513.                 ║ damage the directory and file allocation tables ║
  1514.                 ║ of your disk.  Read everything in this section  ║
  1515.                 ║ before considering the use of this utility.     ║
  1516.                 ╚═════════════════════════════════════════════════╝
  1517.  
  1518.         HIGHBFRS  can  be  used  to  place  MS-DOS  3.x  buffers in upper
  1519.         memory,  but  you  must  be  careful that this does not cause DMA
  1520.         transfers  into  a  128k  region  of  memory  containing a 16-bit
  1521.         adapter,  or else you may damage the data on your disk.  (See the
  1522.         discussion  of  the  RESTRICT  option  of LASTBYTE.SYS.) HIGHBFRS
  1523.         offers  two  solutions  to  this problem: The first (and default)
  1524.         solution  is  to  restrict  buffer  placement  to particular 128k
  1525.         regions where there is no conflict.  
  1526.  
  1527.         If  all three 128k regions contain 16-bit adapters, then a second
  1528.         (different)  solution  may  be both necessary and sufficient.  It
  1529.         intercepts   transfers  between  floppy  disk  drives  and  upper
  1530.         memory,  and  redirects  the  transfer  through  an  intermediate
  1531.         sector  buffer  in  conventional (low) memory.  The corresponding
  1532.         command line option would be: 
  1533.  
  1534.                                 HIGHBFRS /FLOPPY
  1535.  
  1536.         Almost  all  hard  disk  controllers  use 16-bit CPU instructions
  1537.         (rather  than  DMA)  to  transfer data and thus do not incur this
  1538.         problem.   
  1539.  
  1540.         HIGHBFRS   defaults   to   the  maximum  number  of  buffers  and
  1541.         automatically  determines  the  safest  location for loading them
  1542.         into  upper memory by checking with LASTBYTE.SYS for the location
  1543.         of  16-bit  adapter  cards,  if  any.   If none of the three 128k
  1544.         segments  is  considered  "safe",  it will enable interception of
  1545.         floppy  transfers.   Any  of  these defaults can be overridden by
  1546.         one or more of the following command line options: 
  1547.  
  1548.              BUFFERS=<number> 
  1549.  
  1550.                   Changes  the number of MS-DOS buffers to the value
  1551.                   specified;  <number> is a number from 1-99, or may
  1552.                   be replaced by the word MAXIMUM.  
  1553.  
  1554.  
  1555.  
  1556.  
  1557.  
  1558.  
  1559.  
  1560.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  1561.  
  1562.  
  1563.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              27
  1564.  
  1565.  
  1566.              /NORESTRICT (Abbreviated /N) 
  1567.  
  1568.                   Disables   the   default   restriction  on  buffer
  1569.                   placement   caused   by  the  presence  of  16-bit
  1570.                   adapter  cards or by use of the RESTRICT option on
  1571.                   the LASTBYTE.SYS command line.  
  1572.  
  1573.              /FLOPPY (Abbreviated /F) 
  1574.  
  1575.                   Enables  redirection  of  Bios  INT 13h calls that
  1576.                   attempt  to  transfer  data  between a floppy disk
  1577.                   drive  and  upper  memory.   If  redirected,  such
  1578.                   transfers   go   through  an  intermediate  buffer
  1579.                   located   in   conventional   memory.    (Disables
  1580.                   restrictions on buffer placement.) 
  1581.  
  1582.         When  HIGHBFRS  is  invoked  with  no  command line arguments, it
  1583.         simply  reports the number of MS-DOS buffers presently located in
  1584.         upper  memory  and  whether  or not transfers between floppy disk
  1585.         drives  and upper memory are redirected.  You may use the HIGHMEM
  1586.         program  to determine where the buffers have been placed in upper
  1587.         memory.  
  1588.  
  1589.         Microsoft  recommends  setting  the  BUFFERS option in CONFIG.SYS
  1590.         according  to  the  type  of  application  most  frequently used.
  1591.         Implicit  within  this  recommendation is the assumption that you
  1592.         won't  change  the  value  very  often  since it requires editing
  1593.         CONFIG.SYS and rebooting.  
  1594.  
  1595.         In  general, more buffers help when running programs that perform
  1596.         random  access on a relatively small number of disk records (such
  1597.         as  the  index  for a database program), or if your disk has many
  1598.         subdirectories organized on several levels.  
  1599.  
  1600.         Since  HIGHBFRS  allows you to increase or decrease the number of
  1601.         buffers  dynamically,  you  could create some batch files to tune
  1602.         the  number  of  buffers to fit the application you're running at
  1603.         the moment.  
  1604.  
  1605.  
  1606.         5.4 HIGHDISK.SYS         
  1607.  
  1608.         HIGHDISK.SYS  is  a  device  driver that implements a ram disk in
  1609.         upper  memory.   Bank-Switch  Memory  is  allocated first, and if
  1610.         that  isn't  enough, then High-DOS Memory is allocated to satisfy
  1611.         the  total request.  The device driver automatically loads itself
  1612.         into  upper  memory, putting most of itself in bank-switch memory
  1613.         if  available.   (You  can  prevent HIGHDISK from putting part of
  1614.         itself  in  bankswitch  memory by using the /NOSPLIT option.)  Do
  1615.         not  install  HIGHDISK  using  either  HIGHDRVR or the DEVICEHIGH
  1616.         command; simply use a DEVICE command, as in: 
  1617.  
  1618.  
  1619.  
  1620.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  1621.  
  1622.  
  1623.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              28
  1624.  
  1625.  
  1626.  
  1627.                                DEVICE=HIGHDISK.SYS
  1628.  
  1629.         This  creates  a  ram  disk that uses all available upper memory,
  1630.         with 32 directory entries and sectors of 128 bytes each.  
  1631.  
  1632.         A  command line option may be used to specify the size of the RAM
  1633.         disk as in: 
  1634.  
  1635.                              DEVICE=HIGHDISK.SYS 100
  1636.  
  1637.         This creates a 100k byte ram disk.  
  1638.  
  1639.         Other  command  line  options may be used to change the number of
  1640.         bytes per sector and directory entries, as in: 
  1641.  
  1642.                          DEVICE=HIGHDISK.SYS 100 256 64
  1643.  
  1644.         This  creates  a  100k  RAM disk with 256 bytes per sector and 64
  1645.         root directory entries.  
  1646.  
  1647.                 ╔═════════════════════════════════════════════════╗
  1648.                 ║ NOTE: If you have used the command DOS=UMB or   ║
  1649.                 ║ DOS=HIGH,UMB with HIGHUMM.SYS to let DOS 5.0    ║
  1650.                 ║ manage the Upper Memory Blocks, you must limit  ║
  1651.                 ║ how much upper memory HIGHUMM can use so that   ║
  1652.                 ║ some will be available for HIGHDISK.            ║
  1653.                 ╚═════════════════════════════════════════════════╝
  1654.  
  1655.  
  1656.         5.5 HIGHDRVR.SYS         
  1657.  
  1658.         HIGHDRVR  is  a  device  driver that is used to load other device
  1659.         drivers  into upper memory.  For a brief introduction to its use,
  1660.         see  the  section  titled  "Testing LASTBYTE.SYS HIGHDRVR.SYS and
  1661.         HIGHTSR.EXE"  in  the  "GETTING STARTED" chapter at the beginning
  1662.         of   this  manual.   Also  see  the  sections  in  the  "HINTS  /
  1663.         SUGGESTIONS   /  EXPLANATIONS"  chapter  near  the  end  of  this
  1664.         document on the /SIZE, /LOW, and /RESTRICT options.  
  1665.  
  1666.         The command line syntax of the CONFIG.SYS line for HIGHDRVR is: 
  1667.  
  1668.                 DEVICE=[path]HIGHDRVR.SYS <filespec> 
  1669.  
  1670.         where  '<filespec>'  is  the  filename of the device driver to be
  1671.         loaded  high,  optionally  prefixed  by  a  drive  and  directory
  1672.         specifcation.   The  filespec  may  be preceded by one or more of
  1673.         the  /SIZE,  /LOW, and /RESTRICT options, and followed by options
  1674.         at  the  end  of  the  command line as required by the particular
  1675.         driver to be loaded.  
  1676.  
  1677.  
  1678.  
  1679.  
  1680.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  1681.  
  1682.  
  1683.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              29
  1684.  
  1685.  
  1686.         When  HIGHDRVR  searches  the disk for the device driver to load,
  1687.         it follows the following search strategy: 
  1688.  
  1689.              (1)  If  '<filespec>'  includes  a  drive  or directory
  1690.                   specification,  this  will  be the only place that
  1691.                   HIGHDRVR will look.  
  1692.  
  1693.         Otherwise, HIGHDRVR will search for the driver in: 
  1694.  
  1695.              (2)  The current (root) directory, and then 
  1696.  
  1697.              (3)  The same directory where HIGHDRVR was found.  
  1698.  
  1699.  
  1700.         5.6 HIGHEMS3.SYS and HIGHEMS4.SYS       
  1701.  
  1702.         Two  expanded  memory  emulators  are provided with The Last Byte
  1703.         Memory  Manager.   Both  use  upper  memory  as  expanded memory.
  1704.         HIGHEMS3.SYS  is  compliant  with  the  older  LIM  3.2 spec, and
  1705.         HIGHEMS4.SYS  with  the  newer  LIM  4.0 spec.  Both are included
  1706.         since  the  HIGHEMS3.SYS requires much less memory for the device
  1707.         driver  itself  than HIGHEMS4.SYS.  In many applications, you may
  1708.         find that 3.2 is all you need.  
  1709.  
  1710.         These  device  drivers  emulate expanded memory!  That means that
  1711.         they  use  software  to  copy  data  back  and  forth between the
  1712.         logical  EMS  memory (pages) and the page frame.  Obviously, this
  1713.         is  much  slower  than  the  performance  you  would realize with
  1714.         hardware  support,  or even with EMM386.  Therefore, these device
  1715.         drivers  are  provided  as  a  last  resort for those who have no
  1716.         other  way of providing EMS memory to their applications, such as
  1717.         users with only 1 meg of memory.  
  1718.  
  1719.         Both  HIGHEMS3.SYS and HIGHEMS4.SYS have an optional command line
  1720.         parameter  which  is the number of 16k EMS pages to allocate.  If
  1721.         omitted,  the  maximum  allocation  will  be  used.   Bank-Switch
  1722.         memory  is  allocated  first,  and  if  that  isn't  enough, then
  1723.         High-DOS Memory is allocated to satisfy the total page request.  
  1724.  
  1725.         Use  only  one  of  these  device  drivers,  and  load  it  after
  1726.         LASTBYTE.SYS.   The  driver automatically loads itself into upper
  1727.         memory,  putting  much  of  itself  into  bank-switch  memory  if
  1728.         available.   (You  can  prevent it from putting part of itself in
  1729.         bankswitch  memory by using the /NOSPLIT option.)  Do not install
  1730.         HIGHEMS3  or  HIGHEMS4  using  either  HIGHDRVR or the DEVICEHIGH
  1731.         command; simply use a DEVICE command, as in: 
  1732.  
  1733.                                DEVICE=HIGHEMS3.SYS
  1734.  
  1735.         Also  see  the  section  on  the /RESTRICT option in the "HINTS /
  1736.         SUGGESTIONS   /  EXPLANATIONS"  chapter  near  the  end  of  this
  1737.  
  1738.  
  1739.  
  1740.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  1741.  
  1742.  
  1743.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              30
  1744.  
  1745.  
  1746.         document.  
  1747.  
  1748.                 ╔═════════════════════════════════════════════════╗
  1749.                 ║ NOTE: If you have used the command DOS=UMB or   ║
  1750.                 ║ DOS=HIGH,UMB with HIGHUMM.SYS to let DOS 5.0    ║
  1751.                 ║ manage the Upper Memory Blocks, you must limit  ║
  1752.                 ║ how much upper memory HIGHUMM can use so that   ║
  1753.                 ║ some will be available for HIGHEMS3/HIGHEMS4.   ║
  1754.                 ╚═════════════════════════════════════════════════╝
  1755.  
  1756.  
  1757.         5.7 HIGHENV.EXE         
  1758.  
  1759.         HIGHENV  is  a  utility  that moves the master environment of the
  1760.         command  processor  (typically  COMMAND.COM)  out of conventional
  1761.         memory  and  into High-DOS memory.  It can also be used to change
  1762.         the size of the environment at any time.  
  1763.  
  1764.                 ╔═════════════════════════════════════════════════╗
  1765.                 ║ WARNING: HIGHENV is incompatible with Novell.   ║ 
  1766.                 ╚═════════════════════════════════════════════════╝
  1767.  
  1768.         If  used  without  a  command line option, HIGHENV simply reports
  1769.         the  location,  capacity,  and  length of the master environment.
  1770.         If  the  environment  has not been moved from low memory, it also
  1771.         examines  and  reports  potential  references  to the environment
  1772.         that  exist  within  the  command  processor.  If one or more are
  1773.         located, the first line(s) of output from HIGHENV will be: 
  1774.  
  1775.               "Potential command processor patch at location XXXX."
  1776.  
  1777.         where  "XXXX"  will  vary  from one command processor to another.
  1778.         HIGHENV  should  be used this way at least once to determine what
  1779.         /PATCH options (described below) may be required.  
  1780.  
  1781.         To  move  the  master environment into upper memory, you must use
  1782.         one  or  more  /PATCH  options  and  may use a /SIZE option.  The
  1783.         patch  options  specify  locations  in the command processor that
  1784.         must  be  modified.   (If  there  are no locations in the command
  1785.         processor  that  need  to  be  modified,  use  /PATCH=NONE.)  The
  1786.         /PATCH  option  may  only be specified once, when the environment
  1787.         is  moved  from  low  to  upper  memory.  The patch locations are
  1788.         recorded  in  upper  memory and are automatically adjusted if the
  1789.         environment  is repositioned within upper memory as the result of
  1790.         a subsequent use of HIGHENV to resize the environment.  
  1791.  
  1792.         The  size  option  is  simply  a  number that specifies the extra
  1793.         space   in   bytes  to  be  allocated  to  accomodate  additional
  1794.         environment  strings  besides  those already established.  If the
  1795.         size  option  is  omitted, the size of the environment block (and
  1796.         thus its capacity for growth) will not be changed.  
  1797.  
  1798.  
  1799.  
  1800.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  1801.  
  1802.  
  1803.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              31
  1804.  
  1805.  
  1806.  
  1807.                 ╔═════════════════════════════════════════════════╗
  1808.                 ║ WARNING: The SET command of COMMAND.COM norm-   ║ 
  1809.                 ║ ally warns you if you run out of space in the   ║ 
  1810.                 ║ master environment.  However, if you have used  ║ 
  1811.                 ║ HIGHENV to move it into upper memory, this      ║ 
  1812.                 ║ safeguard no longer exists - you'll just write  ║ 
  1813.                 ║ over the next thing in upper memory!  Be sure   ║ 
  1814.                 ║ to check the HIGHENV report to be sure that you ║ 
  1815.                 ║ have enough extra space in the environment so   ║ 
  1816.                 ║ that this won't occur.                          ║ 
  1817.                 ╚═════════════════════════════════════════════════╝
  1818.  
  1819.         A  maximum  of four command processor locations to be patched may
  1820.         be specified in either of two ways: 
  1821.  
  1822.                 A>HIGHENV 256 /PATCH=1057 /PATCH=1536 
  1823.  
  1824.                 -or- 
  1825.  
  1826.                 A>HIGHENV 256 /PATCH=1057,1536 
  1827.  
  1828.         Each  of the patch numbers specify a location in the memory image
  1829.         of  the  command  processor;  these locations contain the segment
  1830.         address  of the master environment, and must be modified to point
  1831.         to  the  new master environment in upper memory.  Possible values
  1832.         to  be  used  are  restricted  to  those  locations reported when
  1833.         HIGHENV  is  run  with  no  command  line  options and before the
  1834.         environment has been moved into upper memory.  
  1835.  
  1836.         COMMAND.COM  usually  contains  only one such location that needs
  1837.         to  be  patched;  4DOS  contains  none (use /PATCH=NONE).  (Note:
  1838.         HIGHENV  always  patches  the  environment  address stored in the
  1839.         program  segment  prefix  of  the  command processor - this patch
  1840.         does not need to be specified.) 
  1841.  
  1842.                 ╔═════════════════════════════════════════════════╗
  1843.                 ║ NOTE: The /U option of 4DOS is an alternative   ║ 
  1844.                 ║ method for placing the master environment in    ║ 
  1845.                 ║ upper memory.  You don't need to use HIGHENV if ║ 
  1846.                 ║ you are already using the /U option of 4DOS.    ║ 
  1847.                 ╚═════════════════════════════════════════════════╝
  1848.  
  1849.         Once  moved into upper memory, the size of the environment may be
  1850.         changed  by  using  HIGHENV  with  simply  a  size  option.   For
  1851.         example,  to  shrink  the environment to only enough room for the
  1852.         current environment strings, use: 
  1853.  
  1854.                 A>HIGHENV 0 
  1855.  
  1856.         Or  to  change  the  growth  capacity  to  allow  for the current
  1857.  
  1858.  
  1859.  
  1860.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  1861.  
  1862.  
  1863.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              32
  1864.  
  1865.  
  1866.         environment strings plus 100 bytes more, use: 
  1867.  
  1868.                 A>HIGHENV 100 
  1869.  
  1870.  
  1871.         5.8 HIGHFILE.EXE         
  1872.  
  1873.         This  program  is  used  to  implement  most  of  the  CONFIG.SYS
  1874.         "FILES=n"   directive   in   High-DOS   memory   rather  than  in
  1875.         Conventional  memory.   The  amount  of  memory  required  by the
  1876.         "FILES=n"  directive  is  approximately  'n' times 59 bytes.  Set
  1877.         the  minimum  of  FILES=8  in the CONFIG.SYS file, and then place
  1878.         the rest in High-DOS memory.  For example, the command: 
  1879.  
  1880.                                    HIGHFILE 42
  1881.  
  1882.         will  add an additional FILES=42 (2500 bytes) in High-DOS memory,
  1883.         for a total of FILES=50.  
  1884.  
  1885.                 ┌─────────────────────────────────────────────────┐
  1886.                 │ NOTE: Windows 3.0 may not run in 386 Enhanced   │
  1887.                 │ mode with FILES in upper memory.                │
  1888.                 └─────────────────────────────────────────────────┘ 
  1889.  
  1890.  
  1891.         5.9 HIGHHOLE.EXE         
  1892.  
  1893.         HIGHHOLE  is  a utility program that finds unused space ("holes")
  1894.         in  ROMs.   A  "hole"  is  defined  as a sequence of at least 256
  1895.         bytes,  all  having  the  same  value, and usually corresponds to
  1896.         unused,  left-over  space  in  the  ROM.  If the ROM is shadowed,
  1897.         this  space  can  usually  be converted into free High-DOS memory
  1898.         using the HOLE option of LASTBYTE.SYS.  
  1899.  
  1900.                 ┌─────────────────────────────────────────────────┐
  1901.                 │ NOTE: The HOLE option is not available in the   │
  1902.                 │ unlicensed version of LASTBYTE.SYS.             │
  1903.                 └─────────────────────────────────────────────────┘ 
  1904.  
  1905.         These  holes  are  often  less  than 1k in size, but sometimes as
  1906.         large  as  6k.   Since  The Last Byte Memory Manager uses a "best
  1907.         fit"  strategy  when  allocating  Hi-DOS memory, even the smaller
  1908.         holes  can  become  useful to hold the master environment created
  1909.         by  HIGHENV,  the  markers  of  HIGHMARK,  or with utilities like
  1910.         HIGHDISK  and  HIGHSPLR  that  can  distribute their memory among
  1911.         several  small pieces.  In addition, The Last Byte Memory Manager
  1912.         will  use  the  smallest  holes for memory control blocks (MCB's)
  1913.         that must be allocated for Bank-Switch memory needs.  
  1914.  
  1915.         HIGHHOLE   merely   locates  probable  holes,  and  suggests  the
  1916.         corresponding  option  to be used with LASTBYTE.SYS.  To activate
  1917.  
  1918.  
  1919.  
  1920.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  1921.  
  1922.  
  1923.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              33
  1924.  
  1925.  
  1926.         these  holes,  you must then modify your configuration to include
  1927.         these  options.   No  option  will be suggested for a hole if (1)
  1928.         the  corresponding  ROM  area is not shadowed, (2) the hole is in
  1929.         the  Bios  Data Area (FE05-FFFF), or (3) the corresponding shadow
  1930.         ram is not controlled by The Last Byte Memory Manager.   
  1931.  
  1932.         NOTE:  Use of LASTBYTE.SYS's HOLE option will cause warm boots to
  1933.         be converted into cold boots.  
  1934.  
  1935.  
  1936.         5.10 HIGHKEY.EXE         
  1937.  
  1938.         HIGHKEY  is  a  advanced  command line editor that can recall and
  1939.         edit  previous  commands.   HIGHKEY  is  similar  to  the  DOSKEY
  1940.         program  in  DOS  5,  but with filename completion and the unique
  1941.         ability  to  store the command line history and much of itself in
  1942.         bank-switch  memory.   (You can prevent HIGHKEY from putting part
  1943.         of  itself  in  bankswitch  memory by using the /NOSPLIT option.)
  1944.         It  does  not  support DOSKEY macros, or the editing keys F7, F9,
  1945.         Alt+F7, or Alt+F10.  
  1946.  
  1947.         To install HIGHKEY, simply enter it as a command at the prompt: 
  1948.  
  1949.                 A>HIGHKEY 
  1950.  
  1951.         This  will  allocate  a  recall buffer with a default size of 512
  1952.         bytes,  but  which  can  be changed at any time with the use of a
  1953.         command line option.  
  1954.  
  1955.  
  1956.         5.10.1 Options         
  1957.  
  1958.         All of the keywords that follow may be abbreviated.  
  1959.  
  1960.         /BUFSIZE=n      Empties the recall buffer, and resizes it to 'n'
  1961.                         bytes.  If 'n' is replaced by the word MAXIMUM,
  1962.                         the recall buffer size will use all available memory
  1963.                         up to 65535 bytes.
  1964.  
  1965.         /INSERT         Sets the default typing mode to insert.
  1966.  
  1967.         /OVERSTRIKE     Sets the default typing mode to overstike.
  1968.  
  1969.         /HISTORY        Displays the contents of the command line
  1970.                         recall buffer on the screen.
  1971.  
  1972.         filespec        A filename, optionally preceeded by a drive and
  1973.                         directory specification.  If used with the /HISTORY
  1974.                         option, causes the recall buffer to be written to
  1975.                         the specified file.  If used without the /HISTORY
  1976.                         option, it loads the recall buffer from the file.
  1977.  
  1978.  
  1979.  
  1980.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  1981.  
  1982.  
  1983.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              34
  1984.  
  1985.  
  1986.  
  1987.  
  1988.         5.10.2 Editing Commands        
  1989.  
  1990.         Some  of  the  HIGHKEY  editing commands use what is known as the
  1991.         "template".   The  template  is  initialized  to  a  copy  of the
  1992.         previous  command line, but may be modified by one or more of the
  1993.         editing commands.  
  1994.  
  1995.         Left Arrow              Moves the cursor back one character.
  1996.  
  1997.         Right Arrow             Moves the cursor forward one character.
  1998.  
  1999.         Up Arrow                Recalls the previous command and stores
  2000.                                 it in the template.
  2001.  
  2002.         Down Arrow              Recalls the next command and stores it
  2003.                                 in the template.
  2004.  
  2005.         PgUp                    Recalls the oldest command and stores it
  2006.                                 in the template.
  2007.  
  2008.         PgDn                    Recalls the most recent command and stores
  2009.                                 it in the template.
  2010.  
  2011.         Ctrl+Left Arrow         Moves the cursor back one word.
  2012.  
  2013.         Ctrl+Right Arrow        Moves the cursor forward one word.
  2014.  
  2015.         Home                    Moves the cursor to the beginning of
  2016.                                 the command line.
  2017.  
  2018.         End                     Moves the cursor to the end of the
  2019.                                 command line.
  2020.  
  2021.         Esc                     Erases the command line; does not affect
  2022.                                 the template.
  2023.  
  2024.         Ins                     Toggles insert versus overwrite mode.
  2025.  
  2026.         Backspace               Deletes the character to the left of the
  2027.                                 cursor; does not affect the template.
  2028.  
  2029.         Del                     Deletes the character at the cursor; does
  2030.                                 not affect the template.
  2031.  
  2032.         Ctrl+End                Deletes from the cursor to the end of
  2033.                                 the line; does not affect the template.
  2034.  
  2035.         Ctrl+Home               Deletes from the beginning of the line
  2036.                                 up to but not including the cursor; does
  2037.  
  2038.  
  2039.  
  2040.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  2041.  
  2042.  
  2043.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              35
  2044.  
  2045.  
  2046.                                 not affect the template.
  2047.  
  2048.         F1                      Copies one character from the template.
  2049.  
  2050.         F2                      Waits for a keypress, then inserts charac-
  2051.                                 ters from the template up to but not in-
  2052.                                 cluding the first occurrence of that key.
  2053.  
  2054.         F3                      Copies the remainder of the template to
  2055.                                 the command line.
  2056.  
  2057.         F4                      Waits for a keypress, then deletes charac-
  2058.                                 ters from the template up to but not in-
  2059.                                 cluding that key.  The template is then
  2060.                                 displayed on the command line.
  2061.  
  2062.         F5                      Copies the command line to the template
  2063.                                 and then erases the command line.
  2064.  
  2065.         F6                      Inserts an end-of-file character (Ctrl+Z).
  2066.  
  2067.         F8                      Searches for the next command that matches
  2068.                                 the characters in the command line up to
  2069.                                 the position of the cursor, then copies
  2070.                                 that command to the template.
  2071.  
  2072.         Tab                     Searches for a file on the disk whose name
  2073.                                 matches the partial filespec given by the
  2074.                                 text indicated by the cursor.  If found,
  2075.                                 the filespec is completed on the command
  2076.                                 line.
  2077.  
  2078.  
  2079.         5.11 HIGHMARK.EXE         
  2080.  
  2081.         Sometimes  it  can  be  useful  to  remove one or more TSR's from
  2082.         memory,  either  because  you  no longer want to use the features
  2083.         that  they  provide  or perhaps in order to make room for another
  2084.         set of TSR's.  
  2085.  
  2086.         In  order  to  be  able  to  remove  a  group of TSR's from upper
  2087.         memory,  they must be be marked.  To mark them, run HIGHMARK once
  2088.         before  you  use  HIGHTSR  to load the TSR's.  Then later, simply
  2089.         run  HIGHUNDO  - the mark and all of its associated TSR's will be
  2090.         removed.  
  2091.  
  2092.         HIGHMARK  may  be  executed  more than once to establish multiple
  2093.         levels  of  TSR's  to  be  removed.   Each  execution of HIGHMARK
  2094.         places  another  mark in memory with a unique mark number.  Every
  2095.         TSR  loaded  by HIGHTSR is automatically associated with the most
  2096.         recent  execution  of  HIGHMARK.   You can use HIGHMEM to see the
  2097.  
  2098.  
  2099.  
  2100.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  2101.  
  2102.  
  2103.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              36
  2104.  
  2105.  
  2106.         marks,  their  mark  number, and the set of TSR's associated with
  2107.         the  mark.   Every execution of HIGHUNDO will then remove the set
  2108.         of TSR's associated with the most recent HIGHMARK.  
  2109.  
  2110.         You  may  specify  a  mark level on the command line of HIGHUNDO.
  2111.         This  will  cause it to remove all the TSR's and marks whose mark
  2112.         number  is  greater  than  or  equal to the number on the command
  2113.         line.  
  2114.  
  2115.         IMPORTANT:  When  a  mark  is  removed  using HIGHUNDO, two basic
  2116.         things  happen: (1) the interrupt vector table is restored to its
  2117.         state  prior  to  the  corresponding HIGHMARK, and (2) any memory
  2118.         control  blocks  marked  with  the same mark number are released.
  2119.         If  you  have  installed  one  or  more  TSR's since the mark was
  2120.         established,  but  did so without the use of HIGHTSR, these TSR's
  2121.         will  be  disabled but they will not be removed from memory.  The
  2122.         following three examples indicate this consequence: 
  2123.  
  2124.                 Disabled and            Diabled but     Disabled but
  2125.                 removed                 remains         remains
  2126.                 --------                ------------    ------------
  2127.                 A>HIGHMARK              A>HIGHMARK      A>HIGHMARK
  2128.                 A>HIGHTSR CLOCK         A>CLOCK         A>LOADHIGH CLOCK
  2129.                 A>HIGHUNDO              A>HIGHUNDO      A>HIGHUNDO
  2130.  
  2131.  
  2132.         5.12 HIGHMEM.EXE         
  2133.  
  2134.         HIGHMEM  is  a  program that provides a display of what is loaded
  2135.         into  the upper memory area.  For a detailed description on using
  2136.         the  HIGHMEM  program,  see  the  section  titled  "Mapping Upper
  2137.         Memory  with  HIGHMEM"  in  the  "GETTING STARTED" chapter at the
  2138.         beginning of this manual.  
  2139.  
  2140.         HIGHMEM   automatically  senses  whether  you  have  a  color  or
  2141.         monochrome  display  to  determine  how  to  present  data on the
  2142.         screen.   However, you may force the mode using one of the /MONO,
  2143.         /COLOR, or /LCD command line options.  
  2144.  
  2145.  
  2146.         5.13 HIGHRSVD.EXE and HIGHRSVD.SYS       
  2147.  
  2148.         HIGHRSVD  is  software  used  to  help  control the allocation of
  2149.         upper  memory  in The Last Byte Memory Manager.  Basically, it is
  2150.         used to reserve and later release selected blocks of memory.  
  2151.  
  2152.         Each  time HIGHRSVD is invoked, it begins by releasing any memory
  2153.         that  had  been  reserved  by  a previous invocation of HIGHRSVD.
  2154.         Then  if  any command line options are specified, each is used to
  2155.         reserve a block of memory.  
  2156.  
  2157.  
  2158.  
  2159.  
  2160.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  2161.  
  2162.  
  2163.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              37
  2164.  
  2165.  
  2166.         Options  (separated  by  commas) are given as the number of bytes
  2167.         to  reserve.   HIGHRSVD  will  attempt to satisfy each request by
  2168.         using  a  "best fit" strategy; that is, it will reserve a block a
  2169.         memory  using  the  smallest  free  block that is large enough to
  2170.         satisfy  the request.  For example, if you have three free blocks
  2171.         of  1000,  5000,  and 10000 bytes respectively, an option of 4000
  2172.         will reserve 4000 bytes from the free block of 5000.  
  2173.  
  2174.         By  default,  the  reserved block will be positioned at the start
  2175.         of  the  selected free block; you may position the reserved block
  2176.         at  the  top  of  the  free  block  by adding ",HIGH" to the size
  2177.         specification, as in 4000,HIGH.  
  2178.  
  2179.  
  2180.         5.14 HIGHSPLR.EXE         
  2181.  
  2182.         HIGHSPLR  is  a  interrupt-driven  print  spooler  that creates a
  2183.         print  buffer  in  upper  memory.   Once installed, programs that
  2184.         send  output to the printer are no longer held up waiting for the
  2185.         printer,  but  rather  simply  send  their  output to the buffer.
  2186.         Characters  in  the  buffer  are  then sent to the printer by the
  2187.         resident  portion  of  HIGHSPLR while your computer is free to do
  2188.         other work.  
  2189.  
  2190.         Unlike  the MS-DOS printer spooler (PRINT), HIGHSPLR is driven by
  2191.         the   printer   hardware  interrupt  line  that  signals  printer
  2192.         "ready",  rather  than  the  timer  tick (that only interrupts 18
  2193.         times   per   second).   Unlike  PRINT,  this  allows  full-speed
  2194.         transfers  (e.g.,  up  to  about  8,000  cps) to the printer even
  2195.         while executing other programs.  
  2196.  
  2197.         HIGHSPLR  tries  to  place  its buffer in Bank-Switch memory, but
  2198.         will  use  High-DOS  memory if a sufficient amount of Bank-Switch
  2199.         memory  is not available.  The size of the buffer will default to
  2200.         all  available  Bank-Switch  and  High-DOS  memory,  but  may  be
  2201.         restricted (or resized later) by a command line option.  
  2202.  
  2203.         HIGHSPLR   supports   both  parallel  and  serial  printers,  but
  2204.         defaults  to  LPT1.  Multiple copies of HIGHSPLR can be installed
  2205.         to  support  more  than  one  printer.   HIGHSPLR  determines the
  2206.         physical  i/o  port  address  and  interrupt vector automatically
  2207.         from  the  device  name  (e.g.,  LPT2), but these defaults can be
  2208.         altered with command line options.  
  2209.  
  2210.         HIGHSPLR  also  has  a  unique "monitor" option.  While output is
  2211.         being  sent  to  the printer, you can monitor the actual transfer
  2212.         rate by entering the command, 
  2213.  
  2214.                 A>HIGHSPLR MONITOR 
  2215.  
  2216.         The  monitor  operation may be terminated at any time by pressing
  2217.  
  2218.  
  2219.  
  2220.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  2221.  
  2222.  
  2223.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              38
  2224.  
  2225.  
  2226.         a  key, or will automatically terminate when the print buffer has
  2227.         been   emptied.   Once  terminated,  HIGHSPLR  will  display  the
  2228.         maximum  and  average  transfer rates measured during the monitor
  2229.         operation.  
  2230.  
  2231.         The  command  line  syntax  for  HIGHSPLR  is  given  below.  All
  2232.         parameters  are  optional and may be specified in any order.  All
  2233.         of  the  options  except  LPT, COM, and IRQ may be abbreviated by
  2234.         their first letter; 
  2235.  
  2236.                 HIGHSPLR [opt] [opt] ... [opt]
  2237.  
  2238.                 where opt may be selected from:
  2239.  
  2240.                 LPT1    LPT2    LPT3    POLL    COM1    COM2    COM3    COM4
  2241.                 IRQ0    IRQ1    IRQ2    IRQ3    IRQ4    IRQ5    IRQ6    IRQ7
  2242.                 RESET   NOTEST  MONITOR         KBYTES=#        PORT=#
  2243.                 or FLOW=<type>, where <type> is selected from:
  2244.  
  2245.                 XON     DTR     RTS     NONE (default)
  2246.  
  2247.         Normally,  neither  the  PORT  or IRQ options are necessary since
  2248.         they  are  automatically derived from the COM or LPT option.  Use
  2249.         POLL  if  you don't want to use interrupt-driven output; this may
  2250.         be  necessary  if  another parallel port is in use for some other
  2251.         purpose  (e.g.,  with  Lantastic/Z).  The RESET option provides a
  2252.         way  to  cancel  printing from the buffer (and do a form-feed) at
  2253.         any  time.   One  of the FLOW control options (XON, DTR, RTS) may
  2254.         be  required  with  some  serial  (COM)  printers to provide flow
  2255.         control.   The  NOTEST  option  disables  the  default  test  for
  2256.         functionality  of the physical port that occurs when the software
  2257.         is first installed.  
  2258.  
  2259.  
  2260.         5.15 HIGHTSR.EXE         
  2261.  
  2262.         HIGHTSR  is  a  program  that  is  used to load TSR programs into
  2263.         upper  memory.   For  a  brief  introduction  to its use, see the
  2264.         section    titled    "Testing   LASTBYTE.SYS   HIGHDRVR.SYS   and
  2265.         HIGHTSR.EXE"  in  the  "GETTING STARTED" chapter at the beginning
  2266.         of  this  manual.   In  addition  to  the /NOENV option described
  2267.         below,  also  see  the sections on the /SIZE, /LOW, and /RESTRICT
  2268.         options  in the "HINTS / SUGGESTIONS / EXPLANATIONS" chapter near
  2269.         the end of this document.  
  2270.  
  2271.         The command line syntax for HIGHTSR is: 
  2272.  
  2273.                 [path]HIGHTSR <filespec> 
  2274.  
  2275.         where  '<filespec>'  is  the  filename  of  the TSR program to be
  2276.         loaded  high,  optionally  prefixed  by  a  drive  and  directory
  2277.  
  2278.  
  2279.  
  2280.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  2281.  
  2282.  
  2283.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              39
  2284.  
  2285.  
  2286.         specifcation.   The  filespec  may  be preceded by one or more of
  2287.         the  /SIZE,  /LOW, /NOENV, and /RESTRICT options, and followed by
  2288.         options  at  the  end  of  the  command  line  as required by the
  2289.         particular TSR to be loaded.  
  2290.  
  2291.         When  HIGHTSR searches the disk for the device driver to load, it
  2292.         follows   the   same  strategy  that  MS-DOS  uses  when  loading
  2293.         programs: 
  2294.  
  2295.              (1)  If  '<filespec>'  includes  a  drive  or directory
  2296.                   specification,  this  will  be the only place that
  2297.                   HIGHTSR will look.  
  2298.  
  2299.         Otherwise, HIGHTSR will search for the TSR program in: 
  2300.  
  2301.              (2)  The current directory, and then 
  2302.  
  2303.              (3)  Those  directories  given  by the PATH environment
  2304.                   variable.  
  2305.  
  2306.         HIGHTSR  may also be used with the MS-DOS "INSTALL=" directive of
  2307.         a  CONFIG.SYS  file.   A  small  part  of HIGHTSR (96 bytes) will
  2308.         remain   resident  in  conventional  memory  when  used  in  this
  2309.         manner.  
  2310.  
  2311.  
  2312.         5.15.1 The /NOENV Option       
  2313.  
  2314.         All  programs,  including  TSR's,  are  allocated  two regions of
  2315.         memory  when  they  are  loaded:  One is the area for the program
  2316.         itself,  and  the  other  is for a copy of the environment.  Most
  2317.         TSR's  don't  make  use  of  their environment, and some actually
  2318.         release it to the operating system rather than hanging onto it.  
  2319.  
  2320.         If  HIGHMEM  finds  an environment block, the corresponding entry
  2321.         in  the  "Description"  column will have the name of the TSR that
  2322.         it  belongs  to  (such as "CLOCK.EXE") followed by the indication
  2323.         "[Env]".    Occassionally,  you  may  see  a  similar  indication
  2324.         "[Dat]";  this  is  a  data block explicitly allocated by the TSR
  2325.         for some unknown purpose.  
  2326.  
  2327.                         TSRs that eliminate their PSP   
  2328.  
  2329.              The  authors  of  some  TSR's  attempt to save a little
  2330.              extra  memory  by  having  the  TSR  eliminate  its own
  2331.              Program  Segment  Prefix  (PSP)  during initialization.
  2332.              Doing  so  makes  it  impossible  to identify the TSR's
  2333.              environment    block.     However,   this   byte-saving
  2334.              mentality    will   usually   mean   that   the   TSR's
  2335.              initialization  code  also  eliminates  its environment
  2336.              block, so this is rarely a problem.  
  2337.  
  2338.  
  2339.  
  2340.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  2341.  
  2342.  
  2343.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              40
  2344.  
  2345.  
  2346.  
  2347.         If  you  see  a  block labelled "[Env]" in the output of HIGHMEM,
  2348.         then  you  can  use  the /NOENV command line option of HIGHTSR to
  2349.         release this block, even if the TSR didn't: 
  2350.  
  2351.                 HIGHTSR /NOENV CLOCK 
  2352.  
  2353.         As  noted  earlier,  some  TSRs  will  release  their environment
  2354.         anyway  and  so you may be tempted to load them without using the
  2355.         /NOENV  option.   This  usually  will  create  a  "hole" in upper
  2356.         memory  since  the  TSR's  environment is almost always allocated
  2357.         just  below  the TSR itself.  Use of the /NOENV option forces the
  2358.         environment  to  be  allocated down in conventional memory (where
  2359.         it will be reclaimed later) so that the "hole" is eliminated.  
  2360.  
  2361.  
  2362.         5.16 HIGHUMM.SYS         
  2363.  
  2364.         HIGHUMM  is  a  device  driver that creates, and lets application
  2365.         software  use,  Upper  Memory  Blocks (UMB's) in the upper memory
  2366.         area  via  a  standard  protocol that is part of what is known as
  2367.         the  Extended  Memory Specification (XMS).  The number, size, and
  2368.         location  of  UMB  blocks vary widely depending upon the types of
  2369.         hardware adapter cards resident within the upper address space.  
  2370.  
  2371.         HIGHUMM may be installed in one of two ways: 
  2372.  
  2373.              o  If  an  XMS  driver  (such as HIMEM.SYS) has already
  2374.                 been  loaded,  HIGHUMM  will link into it, providing
  2375.                 an  implementation  of  the  two  XMS  functions for
  2376.                 accessing  what  the  XMS specification refers to as
  2377.                 "Upper Memory Blocks" (UMB's).  For example, 
  2378.  
  2379.                         DEVICE=LASTBYTE.SYS {and any options}
  2380.                         DEVICE=HIGHDRVR.SYS C:\DOS\HIMEM.SYS {and any options}
  2381.                         DEVICE=HIGHUMM.SYS
  2382.  
  2383.                 Although  described in the XMS specification, so far
  2384.                 the  UMB  functions have not been implemented in any
  2385.                 version  of  HIMEM.SYS.   If your XMS driver happens
  2386.                 to  also  be a UMB provider, HIGHUMM will abort with
  2387.                 a  corresponding  error  message.   You may then use
  2388.                 the  /REPLACE option on the HIGHUMM.SYS command line
  2389.                 to   force   it  to  take  over  responsibility  for
  2390.                 providing UMBs.  
  2391.  
  2392.              o  If  an  XMS driver has not been loaded, then HIGHUMM
  2393.                 will  become a UMB-Only XMS device driver, providing
  2394.                 support  for XMS functions 00h (Get Version Number),
  2395.                 10h   (Allocate  UMB  Block),  11h  (Deallocate  UMB
  2396.                 Block).    All   other  XMS  functions  will  return
  2397.  
  2398.  
  2399.  
  2400.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  2401.  
  2402.  
  2403.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              41
  2404.  
  2405.  
  2406.                 failure,   indicating   that  the  function  is  not
  2407.                 implemented.  For example, 
  2408.  
  2409.                         DEVICE=LASTBYTE.SYS {and any LASTBYTE options}
  2410.                         DEVICE=HIGHUMM.SYS
  2411.  
  2412.                                 Important!       
  2413.  
  2414.                 If  another  XMS  device driver is used (e.g., to
  2415.                 provide  management  of  extended  memory  or the
  2416.                 upper  memory  area),  it  must  be loaded before
  2417.                 HIGHUMM.SYS.  
  2418.  
  2419.  
  2420.         If  you  want  to limit how much upper memory can be allocated by
  2421.         HIGHUMM  as UMB's, you can specify this in kbytes as an option on
  2422.         the HIGHUMM.SYS command line, as in: 
  2423.  
  2424.                 DEVICE=HIGHUMM.SYS 60 
  2425.  
  2426.         This  provides  a guarantee that some amount of upper memory will
  2427.         never  be  allocated  by  HIGHUMM.SYS,  and  will  thus  still be
  2428.         available for other uses.  
  2429.  
  2430.         HIGHUMM  requires  that  LASTBYTE.SYS  be  installed  first.   It
  2431.         automatically  loads  itself  into  upper memory, putting much of
  2432.         itself  into  bank-switch  memory if available.  (You can prevent
  2433.         it  from putting part of itself in bankswitch memory by using the
  2434.         /NOSPLIT  option.)   Do not install HIGHUMM using either HIGHDRVR
  2435.         or  the DEVICEHIGH command; simply use a DEVICE command, as shown
  2436.         above.   Also  see  the  section  on  the /RESTRICT option in the
  2437.         "HINTS  /  SUGGESTIONS  /  EXPLANATIONS"  chapter near the end of
  2438.         this document.  
  2439.  
  2440.  
  2441.         5.17 HIGHUNDO.EXE         
  2442.  
  2443.         For  a complete discussion of HIGHUNDO see the description of its
  2444.         companion program, HIGHMARK in an earlier section.  
  2445.  
  2446.  
  2447.  
  2448.  
  2449.  
  2450.  
  2451.  
  2452.  
  2453.  
  2454.  
  2455.  
  2456.  
  2457.  
  2458.  
  2459.  
  2460.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  2461.  
  2462.  
  2463.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              42
  2464.  
  2465.  
  2466.                CHAPTER 6 - HINTS / SUGGESTIONS / EXPLANATIONS    
  2467.  
  2468.  
  2469.         The  following  article  provides  an excellent definition of the
  2470.         various   kinds   of  memory,  such  as  conventional,  extended,
  2471.         expanded,  high,  and  upper.   More  important,  however, is its
  2472.         discussion  of  how  various  adapter cards make use of the upper
  2473.         address  space,  and  may  provide  some insight if you're having
  2474.         problems   getting  The  Last  Byte  Memory  Manager  to  install
  2475.         properly: 
  2476.  
  2477.              Barry  Simon,  "How  to Get the Most from Your System's
  2478.              High  DOS Memory", PC Magazine, Vol. 9, No. 10 (May 29,
  2479.              1990), pp. 347-358.  
  2480.  
  2481.  
  2482.         6.1 The /SIZE Option       
  2483.  
  2484.         This option may be used with HIGHDRVR and HIGHTSR.  
  2485.  
  2486.         The  amount  of  High-DOS memory required to load a device driver
  2487.         or  TSR  is  the  larger  of two amounts: (1) the amount required
  2488.         during  initialization  and  (2)  the  final resident requirement
  2489.         once  installed.   Either or both of these may be greater than or
  2490.         equal to the size of the file.  
  2491.  
  2492.         Most   device   drivers   and   TSR's  require  more  memory  for
  2493.         initialization  than  when  resident,  although  there  are a few
  2494.         (such   as   SMARTDRV.SYS  and  NANSI.SYS)  which  require  extra
  2495.         resident  memory  for  buffers,  etc.   The  normal  operation of
  2496.         HIGHDRVR  and  HIGHTSR is to use the largest free High-DOS memory
  2497.         block  to load the software since the resident memory requirement
  2498.         cannot  be  determined  until  after the software has been loaded
  2499.         and initialized.  
  2500.  
  2501.         Unfortunately,  this  can  lead  to  a  less  than optimum use of
  2502.         memory.   If  the  memory  requirements were known, then a memory
  2503.         block  could  be  selected using a "best fit" strategy; i.e., the
  2504.         smallest  free  High-DOS  memory  block  which  is larger than or
  2505.         equal  to  the  load  requirement.   This usually results in much
  2506.         better utilization of memory.  
  2507.  
  2508.         6.1.1 Measuring Load Requirements Using /SIZE     
  2509.  
  2510.         If  inserted  on the command line of HIGHTSR or HIGHDRVR as shown
  2511.         below: 
  2512.  
  2513.                            HIGHTSR /SIZE PRINT /D:PRN
  2514.  
  2515.         then  both  the  initialization and resident requirements will be
  2516.         displayed  on  the console after the software has been loaded and
  2517.  
  2518.  
  2519.  
  2520.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  2521.  
  2522.  
  2523.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              43
  2524.  
  2525.  
  2526.         initialized.  
  2527.  
  2528.         6.1.2 Achieving Best Fit Using /SIZE:n1     
  2529.  
  2530.         The  larger  of  the initialization and resident requirements may
  2531.         be  specified  with  the  /SIZE  option  to  force  a  "best fit"
  2532.         allocation.  For example: 
  2533.  
  2534.                       HIGHTSR /SIZE:17120 PRINT.EXE /D:PRN
  2535.  
  2536.         6.1.3 Borrowing Initialization Memory Using /SIZE:n1 n2    
  2537.  
  2538.         Usually  the resident requirement is less than the initialization
  2539.         requirement.   If  there  isn't  enough  free  High-DOS memory to
  2540.         satisfy  the  initialization requirement, but there is enough for
  2541.         the  resident  requirement,  then  you  may still be able to load
  2542.         your  software  by adding a second parameter to the /SIZE option,
  2543.         as in: 
  2544.  
  2545.                       HIGHTSR /SIZE:16208,5776 PRINT /D:PRN
  2546.  
  2547.         In  this  example, the initialization requirement is specified by
  2548.         the  first parameter and is 16208 bytes; the resident requirement
  2549.         is  specified  by  the  second parameter and is 5776 bytes.  Note
  2550.         that  specifying  the  second parameter is not helpful unless the
  2551.         resident    requirement   is   less   than   the   initialization
  2552.         requirement.  
  2553.  
  2554.         When  the  second  parameter  is  used, HIGHTSR first looks for a
  2555.         free  area larger than or equal to the initialization requirement
  2556.         (the  first parameter); if found, it simply loads the software in
  2557.         this  area  and  the  second  paramter  is  ignored.   Otherwise,
  2558.         HIGHTSR  searches  for  a  free  area larger than or equal to the
  2559.         resident  requirement  (the  second  parameter),  and  which  has
  2560.         "data"  allocated  immediately  above  it that can be temporarily
  2561.         moved  to create enough free memory to satisfy the initialization
  2562.         requirement.   Such  "data"  includes  High-DOS  memory  used  by
  2563.         HIGHDISK,  HIGHEMS3,  HIGHEMS4,  HIGHSPLR,  HIGHKEY,  and for TSR
  2564.         markers.  
  2565.  
  2566.  
  2567.         6.2 The /LOW Option       
  2568.  
  2569.         This option can be used with HIGHDRVR and HIGHTSR.  
  2570.  
  2571.         As  noted  earlier,  TSR's  and device drivers often require much
  2572.         more  memory  during  installation  as  compared to that required
  2573.         once  they  are  resident.   This  can  prevent loading them into
  2574.         High-DOS  memory  even  if  there's enough for the resident image
  2575.         (but not enough for initialization).  
  2576.  
  2577.  
  2578.  
  2579.  
  2580.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  2581.  
  2582.  
  2583.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              44
  2584.  
  2585.  
  2586.         HIGHTSR  and  HIGHDRVR  provide  an  option /LOW that can be used
  2587.         with some TSR's and device drivers to get around this problem: 
  2588.  
  2589.                 HIGHTSR /LOW APPEND 
  2590.  
  2591.                 -or- 
  2592.  
  2593.                 DEVICE=HIGHDRVR.SYS /LOW MYDRIVER.SYS 
  2594.  
  2595.         For  example,  the  first  example above loads a TSR (APPEND.EXE)
  2596.         and  initializes  it  in  low (conventional) memory where there's
  2597.         lots  of  room,  then copies the (smaller) resident image up into
  2598.         upper memory.  
  2599.  
  2600.                 ╔═════════════════════════════════════════════════╗
  2601.                 ║ WARNING: The design of some software may pre-   ║ 
  2602.                 ║ vent the /LOW option from working properly.     ║ 
  2603.                 ║ Don't use it unless necessary, and then only    ║ 
  2604.                 ║ after you have tested it to be sure everything  ║ 
  2605.                 ║ works as expected.  (For example, it will NOT   ║ 
  2606.                 ║ work with PRINT, SHARE, FASTOPEN, MODE, or      ║ 
  2607.                 ║ HyperDisk.)                                     ║ 
  2608.                 ╚═════════════════════════════════════════════════╝
  2609.  
  2610.  
  2611.         6.3 The /RESTRICT Option       
  2612.  
  2613.         This   option  can  be  used  with  HIGHDRVR,  HIGHTSR,  HIGHUMM,
  2614.         HIGHEMS3,  and  HIGHEMS4.   When  used,  it  restricts which 128k
  2615.         regions  of  upper  memory  may  be  allocated for use with these
  2616.         utilities.   For  a  detailed discussion of why these regions may
  2617.         need  to  be  restricted and how to control the restrictions, see
  2618.         the   discussion   of   the   RESTRICT  option  in  the  detailed
  2619.         description of LASTBYTE.SYS.  
  2620.  
  2621.  
  2622.         6.4 The /!NOPAUSE Option       
  2623.  
  2624.         All  of  the  utility  programs  (*.EXE files) that come with The
  2625.         Last   Byte  Memory  Manager  support  the  command  line  option
  2626.         /!NOPAUSE.   This  option  eliminates the wait-for-keyboard pause
  2627.         after  an error message is displayed.  When one of these programs
  2628.         terminates  with  an  error  message,  it also returns a non-zero
  2629.         errorlevel  which  can be tested in batch files to make automatic
  2630.         decisions  about  how  to  proceed.  The  /!NOPAUSE option simply
  2631.         makes use of the errorlevel more practical.  
  2632.  
  2633.  
  2634.  
  2635.  
  2636.  
  2637.  
  2638.  
  2639.  
  2640.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  2641.  
  2642.  
  2643.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              45
  2644.  
  2645.  
  2646.         6.5 Specifying Command Line Options with Indirect Files   
  2647.  
  2648.         Some  of the device drivers and utility programs in The Last Byte
  2649.         Memory  Manager  package  may  require  lots  of  options  to  be
  2650.         specified.   To  avoid  lengthly command lines, these options can
  2651.         be  placed  in  a text file if the name of that file is specified
  2652.         on  the command line preceded by the '@' character.  For example,
  2653.         you'd  probably  run  out of room if all of the following options
  2654.         were required on the LASTBYTE.SYS command line: 
  2655.  
  2656.                    APPEND=64 DOS=B000:32 DOS=F000:32 ? 82C302
  2657.  
  2658.         As  an  alternative,  create  a  corresponding  text  file called
  2659.         LASTBYTE.CFG (for example), and put the options into it: 
  2660.  
  2661.                 A000:64 
  2662.                 DOS=B000:32 DOS=F000:32 
  2663.                 ? 82C302 
  2664.  
  2665.         (Carriage returns in the indirect file are treated as blanks) 
  2666.  
  2667.         Then the CONFIG.SYS command line becomes simply: 
  2668.  
  2669.                 DEVICE=LASTBYTE.SYS @LASTBYTE.CFG 
  2670.  
  2671.         In  effect,  options  taken  from  the indirect file are inserted
  2672.         into  the  command  line,  so  that  one  or  more  indirect file
  2673.         references  may  be  placed  among  other  options on the command
  2674.         line: 
  2675.  
  2676.                 DEVICE=LASTBYTE.SYS ? @TLB.1 A=A000:32 @C:\TLB\TLB.2 
  2677.  
  2678.         Indirect  files  may  be  used  on the command line of any device
  2679.         driver  (.SYS  files) or utility program (.EXE files) in The Last
  2680.         Byte Memory Manager package.  
  2681.  
  2682.  
  2683.         6.6 Using the DOS=F000:32 Option      
  2684.  
  2685.         The  64k  region  starting  at paragraph address F000 is the Bios
  2686.         ROM.   Many  computers  use  a  Bios  ROM  developed  by  AMI  or
  2687.         Phoenix.   The  more  recent  versions  of  these ROMs devote the
  2688.         first  32k  to  initialization  code that is only used during the
  2689.         boot  sequence, and use the second 32k for that portion that must
  2690.         remain  available  at  all  times.  (This seems to be true of the
  2691.         Award Bios as well, but has not been verified.) 
  2692.  
  2693.         By  the time your computer gets to the point in its boot sequence
  2694.         where  it  is  installing  the  device  drivers (e.g., when it is
  2695.         installing  LASTBYTE.SYS),  the  Bios  initialization  code is no
  2696.         longer  needed.   If  you  have  one of these AMI or Phoenix Bios
  2697.  
  2698.  
  2699.  
  2700.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  2701.  
  2702.  
  2703.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              46
  2704.  
  2705.  
  2706.         chips,  you  can  capture  another 32k of upper memory by using a
  2707.         DOS=F000:32 option on the LASTBYTE.SYS command line.  
  2708.  
  2709.         Of  course,  whenever  you  press Ctrl-Alt-Del to do a warm boot,
  2710.         the  ROM  Bios  initialization  code  needs to be executed again!
  2711.         And  that could be a problem since you've effectively disabled it
  2712.         with   the   DOS=F000:32   option!    Fortunately,   LASTBYTE.SYS
  2713.         intercepts   all   keyboard  input  and  keeps  an  eye  out  for
  2714.         Ctrl-Alt-Del.   When it sees the warm boot request, it will force
  2715.         a  cold  boot  if  you've  used  the  DOS=F000:32  option.   This
  2716.         re-enables  the  entire  64k  Bios ROM so that the initialization
  2717.         code  is  reactivated  before  the processor tries to execute it.
  2718.         Otherwise a normal warm boot is used.  
  2719.  
  2720.                 ╔═════════════════════════════════════════════════╗
  2721.                 ║ WARNING: Some TSRs intercept keyboard interrupt ║ 
  2722.                 ║ 9, and jump directly into a fixed location in   ║ 
  2723.                 ║ the Bios ROM where the Warm Boot code begins.   ║ 
  2724.                 ║ Unfortunately, this will bypass LASTBYTE.SYS's  ║ 
  2725.                 ║ attempt to turn the ROM back on.                ║ 
  2726.                 ╚═════════════════════════════════════════════════╝
  2727.  
  2728.  
  2729.         6.7 Video Display RAM above 640k     
  2730.  
  2731.         In  general,  the  region A0000-BFFFF is the video display buffer
  2732.         area.   Various  display  adapters  (MDA, Hercules, CGA, EGA, and
  2733.         VGA)  typically  use only a small subset of this space.  The Last
  2734.         Byte  Memory  Manager  automatically  senses  what  kind of video
  2735.         display adapter is installed and reserves the space it uses.  
  2736.  
  2737.         The  MDA  (monochrome)  adapter  implements  a  4k text buffer at
  2738.         B0000-B0FFF,  and  the  CGA (color) adapter implements a 16k text
  2739.         and  graphics  buffer  at B8000-BBFFF.  The Hercules adapter uses
  2740.         the  entire 64k region at B0000-BFFFF in graphics modes, although
  2741.         only  the  first  4k of this space (B0000-B0FFF) is used for text
  2742.         modes.  
  2743.  
  2744.         The  EGA  and  VGA adapters have a 64k graphics display buffer at
  2745.         A0000-AFFFF,  and a 32k text display buffer at either B0000-B7FFF
  2746.         (when  used  with  a monochrome display), or at B8000-BFFFF (when
  2747.         used with a color display).  
  2748.  
  2749.         The  following  chart summarizes these regions as well as some of
  2750.         the  DOS  and  APPEND  optons  you  may  be  able  to  use on the
  2751.         LASTBYTE.SYS  command  line  with these adapters.  Unfortunately,
  2752.         the  ROM  bios  on  a  (very)  few  PC's may write into locations
  2753.         outside  the  area reserved for a particular type of display.  If
  2754.         you  decide  this  is  happening, you may need to add one or more
  2755.         EXCLUDE  options to the LASTBYTE.SYS command line to disable that
  2756.         region.  
  2757.  
  2758.  
  2759.  
  2760.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  2761.  
  2762.  
  2763.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              47
  2764.  
  2765.  
  2766.  
  2767.              LASTBYTE.SYS Command Line Options for Display Adapters
  2768.  
  2769.              Adapter         Reserved        DOS         APPEND
  2770.              -------         --------        -------     -------
  2771.              CGA             B800:16                     96
  2772.              MDA             B000:4                      64
  2773.              Hercules        B000:64         B400:48     64
  2774.  
  2775.              EGA/VGA         A000:64         BC00:16     96
  2776.              w/Color         B800:32 
  2777.              Display
  2778.  
  2779.              EGA/VGA         A000:64         B400:16     64
  2780.              w/Mono          B000:32
  2781.              Display
  2782.  
  2783.              VGA Bios        C000:32         C600:8 (see next section)
  2784.  
  2785.                   Note: Windows 3.0 may write in the region B000-BFFF.
  2786.  
  2787.         The  ability  to  use  the  DOS and APPEND options depends on the
  2788.         availability  of other memory in the indicated area.  For further
  2789.         information, consult the appendix on "CHIPSET LIMITATIONS".  
  2790.  
  2791.  
  2792.         6.8 Video Adapter Bios ROMs      
  2793.  
  2794.         MDA  and CGA use the standard ROM Bios; they have no ROM of their
  2795.         own.   EGA  and  VGA adapters, however, incorporate their own ROM
  2796.         Bios  chip  right on the adapter card.  LASTBYTE.SYS successfully
  2797.         recognizes these ROMs, but has to treat VGA in a special manner: 
  2798.  
  2799.         The  VGA  adapter  made  by  IBM  has  a  24k  ROM  installed  at
  2800.         C0000-C5FFF,  which  means  that  the 8k at C6000-C7FFF should be
  2801.         usable.   Although  almost  all  VGA  clones have a ROM signature
  2802.         that  indicates  24k,  many of them use the C6000-C7FFF space for
  2803.         ROM  Bios  or  RAM  extensions  that  provide  their  "Super VGA"
  2804.         features.    In   particular,   the  Video7  and  Paradise  VGA's
  2805.         incorporate  their  own  RAM from C6000-C7FFF.  (This may also be
  2806.         true  of  other  VGA boards that uses a VLSI chip manufactured by
  2807.         Chips   and  Technologies,  Tseng  Labs,  Paradise,  or  Headland
  2808.         Technologies.)    For   this   reason,  when  LASTBYTE.SYS  finds
  2809.         anybody's  VGA  adapter, it automatically assumes that there is a
  2810.         32k ROM at C0000-C7FFF.  
  2811.  
  2812.  
  2813.  
  2814.  
  2815.  
  2816.  
  2817.  
  2818.  
  2819.  
  2820.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  2821.  
  2822.  
  2823.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              48
  2824.  
  2825.  
  2826.         6.9 LASTBYTE.SYS and Expanded Memory      
  2827.  
  2828.         Expanded  memory always has an associated device driver.  If that
  2829.         driver  is loaded before LASTBYTE.SYS in the CONFIG.SYS file (and
  2830.         if  the  hardware is enabled) LASTBYTE.SYS will recognize the 64k
  2831.         EMM  page frame of the expanded memory and do the right thing: It
  2832.         will  treat the page frame like any other adapter ram and disable
  2833.         the  motherboard RAM that falls in the same address space so that
  2834.         it  doesn't  interfere  with the page frame.  For example, if the
  2835.         EMM  driver is loaded first, LASTBYTE.SYS will report the 64k EMM
  2836.         page frame as "EMS Page Frame".  
  2837.  
  2838.         This  works  fine,  of  course,  but loading the EMM driver first
  2839.         precludes  the  possibility  of loading it into upper memory.  To
  2840.         get  the  EMM  driver  into  upper  memory  means that it must be
  2841.         loaded after LASTBYTE.SYS, but you must be careful! 
  2842.  
  2843.         If   LASTBYTE.SYS  is  loaded  first,  the  page  frame  will  be
  2844.         recognized only in two cases: 
  2845.  
  2846.              o  The   page   frame   used  by  the  expanded  memory
  2847.                 controller  built  into some memory controller chips
  2848.                 will   be  recognized  and  reported  as  "EMS  Page
  2849.                 Frame".  
  2850.  
  2851.              o  The  page  frame  of a REAL expanded memory board is
  2852.                 (if  enabled)  recognized  and  reported as "Adapter
  2853.                 RAM".  
  2854.  
  2855.         In either case, LASTBYTE.SYS will not use that memory space.  
  2856.  
  2857.                 ╔═════════════════════════════════════════════════╗
  2858.                 ║ WARNING: Some EMS boards must be enabled by     ║ 
  2859.                 ║ their device driver before they respond as      ║ 
  2860.                 ║ read/write memory.  This prevents LASTBYTE.SYS  ║ 
  2861.                 ║ from recognizing them, and you may need a       ║ 
  2862.                 ║ BANKSWITCH option to keep LASTBYTE.SYS from     ║ 
  2863.                 ║ using the page frame memory space.              ║ 
  2864.                 ╚═════════════════════════════════════════════════╝
  2865.  
  2866.         If  you  don't  have  an  expanded  memory board, but have used a
  2867.         device  driver  (like EMM386) that EMULATES expanded memory using
  2868.         extended  memory,  then LASTBYTE.SYS will not know about the page
  2869.         frame  unless  the  emulator is loaded first.  If LASTBYTE.SYS is
  2870.         loaded  first,  then  you  must  use  a EXCLUDE (not BANKSWITCH!)
  2871.         command  line  option  of  LASTBYTE.SYS  to  reserve a 64k region
  2872.         where  the  emulated  page  frame can be placed.  For EMM386, the
  2873.         page  frame  must  be positioned at C000, C400, C800, CC00, D000,
  2874.         D400, D800, DC00, or E000.  
  2875.  
  2876.  
  2877.  
  2878.  
  2879.  
  2880.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  2881.  
  2882.  
  2883.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              49
  2884.  
  2885.  
  2886.         6.10 Fine-Tuning your Adapter Hardware Configuration     
  2887.  
  2888.         Many  adapter  cards  occupy  some  portion  of the upper address
  2889.         space.   Some  of  these  cards,  such  as SCSI Disk Controllers,
  2890.         often  have  DIP  switches or jumpers that can be used to set the
  2891.         address space they occupy to one of a few alternatives.  
  2892.  
  2893.         If  the memory map displayed by HIGHMEM is fragmented because one
  2894.         of  these adapters sits between two "....DOS Free" areas, you may
  2895.         want  to  try  to  reposition  the address space occupied by that
  2896.         adapter  by  modifying  the  DIP switch or jumper settings on the
  2897.         card.  
  2898.  
  2899.         Having  one  large  free  memory block is better than two smaller
  2900.         ones  because TSR's and device drivers almost always require more
  2901.         memory  during  initialization  than  once  installed.   In other
  2902.         words,  neither of the two smaller blocks may be large enough for
  2903.         the installation, but might if they were combined.  
  2904.  
  2905.  
  2906.  
  2907.  
  2908.  
  2909.  
  2910.  
  2911.  
  2912.  
  2913.  
  2914.  
  2915.  
  2916.  
  2917.  
  2918.  
  2919.  
  2920.  
  2921.  
  2922.  
  2923.  
  2924.  
  2925.  
  2926.  
  2927.  
  2928.  
  2929.  
  2930.  
  2931.  
  2932.  
  2933.  
  2934.  
  2935.  
  2936.  
  2937.  
  2938.  
  2939.  
  2940.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  2941.  
  2942.  
  2943.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              50
  2944.  
  2945.  
  2946.                     CHAPTER 7 - USE WITH OTHER SOFTWARE     
  2947.  
  2948.  
  2949.         7.1 Microsoft's FASTOPEN and MODE programs     
  2950.  
  2951.         The  FASTOPEN  and  MODE programs that come with MS-DOS are TSR's
  2952.         and  as  such may be loaded into upper memory with HIGHTSR.  Once
  2953.         installed,  each  requires  very  little memory, something on the
  2954.         order  of  10k  or  less.  However, neither will install unless a
  2955.         lot  of  memory is available - approximately 50-90k.  (The actual
  2956.         requirement  depends  partly  on  command  line  options; you can
  2957.         determine the requirement using the /SIZE option of HIGHTSR.) 
  2958.  
  2959.                 ╔═════════════════════════════════════════════════╗
  2960.                 ║ WARNING: Do NOT use the /LOW option of HIGHTSR  ║ 
  2961.                 ║ with FASTOPEN or MODE - it won't work and could ║ 
  2962.                 ║ damage data on your disk!                       ║ 
  2963.                 ╚═════════════════════════════════════════════════╝
  2964.  
  2965.         The  worst  part  is  that  if  FASTOPEN  fails to install itself
  2966.         successfully,  it  doesn't  issue  any  error message - it simply
  2967.         doesn't   display   the   normal   "FASTOPEN  installed"  sign-on
  2968.         message.   Moral:  Let  FASTOPEN and MODE be the first TSR's that
  2969.         are  installed into High Memory in your AUTOEXEC.BAT file so that
  2970.         they get access to the maximum amount of memory.  
  2971.  
  2972.         The  second  hassle  with  these two TSR's is that they cannot be
  2973.         removed  by  using  HIGHMARK and HIGHUNDO.  Evidently they modify
  2974.         memory  other than that tracked by HIGHMARK (the interrupt vector
  2975.         table and that memory allocated to them).  
  2976.  
  2977.  
  2978.         7.2 Microsoft's SHARE program       
  2979.  
  2980.         MS-DOS  4  installs the SHARE program automatically if you have a
  2981.         hard  disk which is greater than 32 MB in a single partition.  It
  2982.         does  this  without  asking  because  it is otherwise possible to
  2983.         corrupt  the  data on the disk when running programs that use the
  2984.         old File Control Block (FCB) approach to access files.  
  2985.  
  2986.         Unfortunately,  some  internal parts of MS-DOS 4.0 also still use
  2987.         FCB's!   So  don't  try  to  prevent  SHARE  from being loaded by
  2988.         removing  it  from  your system!  If MS-DOS can't find it, you'll
  2989.         get  a  warning message during the boot saying that "SHARE should
  2990.         be   loaded   for   large  media".   You  could  load  it  during
  2991.         AUTOEXEC.BAT   processing,  but  you'll  still  get  the  warning
  2992.         because the check occurs during CONFIG.SYS processing.  
  2993.  
  2994.  
  2995.  
  2996.  
  2997.  
  2998.  
  2999.  
  3000.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  3001.  
  3002.  
  3003.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              51
  3004.  
  3005.  
  3006.                 ╔═════════════════════════════════════════════════╗
  3007.                 ║ NOTE: Version 5 of MS-DOS has corrected this    ║ 
  3008.                 ║ problem and no longer loads SHARE automatically ║ 
  3009.                 ║ regardless of the size of your hard disk.       ║ 
  3010.                 ╚═════════════════════════════════════════════════╝
  3011.  
  3012.         So  how  can  you load this TSR into upper memory without getting
  3013.         the   warning?    MS-DOS   recently   introduced  the  "INSTALL="
  3014.         directive  that  allows  TSR's  to be installed during CONFIG.SYS
  3015.         processing.   Programs  that Microsoft suggests be loaded in this
  3016.         manner include FASTOPEN, KEYB, NLSFUNC, and SHARE.  For example: 
  3017.  
  3018.                             INSTALL=C:\DOS\SHARE.EXE
  3019.  
  3020.         The  above  command,  however,  causes SHARE to be loaded down in
  3021.         conventional memory.  to get it into upper memory, use: 
  3022.  
  3023.                       INSTALL=HIGHTSR.EXE C:\DOS\SHARE.EXE
  3024.  
  3025.                 ╔═════════════════════════════════════════════════╗
  3026.                 ║ WARNING: Do NOT use the /LOW option of HIGHTSR  ║ 
  3027.                 ║ with SHARE - it won't work and could damage     ║ 
  3028.                 ║ data on your disk!                              ║ 
  3029.                 ╚═════════════════════════════════════════════════╝
  3030.  
  3031.  
  3032.         7.3 Microsoft's MS-DOS 5.0       
  3033.  
  3034.         With   the  introduction  of  MS-DOS  5.0,  Microsoft  has  added
  3035.         extensive  support  for  loading software into high memory.  This
  3036.         includes  not  only  device drivers and TSRs, but also the MS-DOS
  3037.         disk  buffers,  the master environment, and most of the operating
  3038.         system itself.  
  3039.  
  3040.         This  capability  requires the use of an Upper Memory Block (UMB)
  3041.         server  such as Key Software Products' HIGHUMM.SYS.  Although the
  3042.         MS-DOS  5.0  version  of EMM386 has been modified to provide such
  3043.         support,  there  are several disadvantages to using it instead of
  3044.         The Last Byte Memory Manager to load software high: 
  3045.  
  3046.              o  EMM386   requires   a   386   or  better  processor.
  3047.                 (HIGHUMM does not.) 
  3048.  
  3049.              o  EMM386  requires  that  HIMEM.SYS  be  loaded first.
  3050.                 (HIGHUMM  does  not.   However, HIMEM is also needed
  3051.                 to  load  the  operating system itself into extended
  3052.                 memory;  The  Last Byte Memory Manager allows you to
  3053.                 load HIMEM into upper memory using HIGHDRVR.) 
  3054.  
  3055.  
  3056.  
  3057.  
  3058.  
  3059.  
  3060.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  3061.  
  3062.  
  3063.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              52
  3064.  
  3065.  
  3066.              o  Using  HIMEM  and EMM386 as the basis of UMB support
  3067.                 requires  that  both  be  loaded  into  conventional
  3068.                 memory, where they use approximately 10k bytes.  
  3069.  
  3070.              o  EMM386  puts  the  processor  into  protected  mode,
  3071.                 adding  an  instruction  execution  time  penalty of
  3072.                 about 5%.  
  3073.  
  3074.         There  are  two  basic  approaches  that  you  can  take  to load
  3075.         software  into  upper  memory  using MS-DOS 5.0 and The Last Byte
  3076.         Memory  Manager.   The  first  of these is to install HIGHUMM and
  3077.         use  the  'DEVICEHIGH'  and  'LOADHIGH'  commands  introduced  in
  3078.         MS-DOS 5.0; the other is to use HIGHDRVR and HIGHTSR.  
  3079.  
  3080.         We  recommend  the  latter  approach because HIGHDRVR and HIGHTSR
  3081.         provide  a  richer  set  of options for controlling the load high
  3082.         process.  
  3083.  
  3084.  
  3085.         7.3.1 Using DEVICEHIGH and LOADHIGH      
  3086.  
  3087.         To  use  this  approach,  your CONFIG.SYS file should contain the
  3088.         following lines: 
  3089.  
  3090.                 DOS=HIGH,UMB 
  3091.                 DEVICE=LASTBYTE.SYS {and any options} 
  3092.                 DEVICE=HIGHDRVR.SYS C:\DOS\HIMEM.SYS 
  3093.                 DEVICE=HIGHUMM.SYS {and any options} 
  3094.  
  3095.         Then  you can use the MS-DOS 5.0 DEVICEHIGH command in additional
  3096.         lines  of  your CONFIG.SYS file to load your other device drivers
  3097.         into upper memory, as in: 
  3098.  
  3099.                 DEVICEHIGH={device driver to be loaded high} 
  3100.                 DEVICEHIGH={device driver to be loaded high} 
  3101.                         . . .  
  3102.                 DEVICEHIGH={device driver to be loaded high} 
  3103.  
  3104.         With  this  CONFIG.SYS file, your AUTOEXEC.BAT file may load TSRs
  3105.         high using the MS-DOS 5.0 LOADHIGH command as in: 
  3106.  
  3107.                 LOADHIGH C:\DOS\PRINT 
  3108.  
  3109.  
  3110.         7.3.2 Using HIGHDRVR and HIGHTSR      
  3111.  
  3112.         The  second approach is to use the HIGHDRVR and HIGHTSR utilities
  3113.         of  The  Last  Byte  Memory Manager in the normal manner.  To use
  3114.         this  approach, your CONFIG.SYS file should contain the following
  3115.         lines: 
  3116.  
  3117.  
  3118.  
  3119.  
  3120.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  3121.  
  3122.  
  3123.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              53
  3124.  
  3125.  
  3126.                 DOS=HIGH 
  3127.                 DEVICE=LASTBYTE.SYS {and any options} 
  3128.                 DEVICE=HIGHDRVR.SYS C:\DOS\HIMEM.SYS 
  3129.  
  3130.         Then  you can use HIGHDRVR in additional lines of your CONFIG.SYS
  3131.         file to load your other device drivers into upper memory, as in: 
  3132.  
  3133.                 DEVICE=HIGHDRVR.SYS {device driver to be loaded high} 
  3134.                 DEVICE=HIGHDRVR.SYS {device driver to be loaded high} 
  3135.                         . . .  
  3136.                 DEVICE=HIGHDRVR.SYS {device driver to be loaded high} 
  3137.  
  3138.         With  this  CONFIG.SYS  file,  your AUTOEXEC.BAT file should load
  3139.         TSRs high using HIGHTSR as in: 
  3140.  
  3141.                 HIGHTSR C:\DOS\PRINT 
  3142.  
  3143.  
  3144.         7.4 Microsoft's Windows 3.0       
  3145.  
  3146.         In  general,  The  Last  Byte Memory Manager has a high degree of
  3147.         compatibility  with  Windows  3.0.   If  you  are  having trouble
  3148.         running  Windows,  first  be  sure  that  your system is properly
  3149.         configured  so  that it runs without The Last Byte Memory Manager
  3150.         installed.    If   you   have   isolated  the  problem  to  their
  3151.         combination,  then perhaps the following information will help to
  3152.         correct the problem: 
  3153.  
  3154.  
  3155.         7.4.1 Modifying the Windows SYSTEM.INI File     
  3156.  
  3157.         With  Windows  3.0 running in 386 enhanced mode, LASTBYTE.SYS and
  3158.         Windows  will  both  try  to  use  the  upper  memory  area, thus
  3159.         creating  a  conflict.   To  avoid  the  conflict,  you  must ask
  3160.         Windows  to  not  use  this  region.  This can be done with a few
  3161.         configuration  options  in  the  [386Enh]  section of the Windows
  3162.         SYSTEM.INI file: 
  3163.  
  3164.                   EMMExclude=A000-FFFF
  3165.                   HighFloppyReads=no
  3166.                   DualDisplay=yes
  3167.                   SystemROMBreakPoint=no
  3168.  
  3169.         If  you  have  used the EXCLUDE option of LASTBYTE.SYS to disable
  3170.         any  region  of  the upper memory, then Windows may be told it is
  3171.         ok  to  use  that  area.   For example, if LASTBYTE.SYS is loaded
  3172.         using the line: 
  3173.  
  3174.                        DEVICE=LASTBYTE.SYS EXCLUDE=D000:64
  3175.  
  3176.         then  you may use the following configuration option (in addition
  3177.  
  3178.  
  3179.  
  3180.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  3181.  
  3182.  
  3183.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              54
  3184.  
  3185.  
  3186.         to the EMMExclude option above) in your SYSTEM.INI file: 
  3187.  
  3188.                               EMMInclude=D000-DFFF
  3189.  
  3190.         The  EMMInclude  option  will take precedence over the EMMExclude
  3191.         option when the two overlap, as above.  
  3192.  
  3193.  
  3194.         7.4.2 Positioning an EMS Page Frame     
  3195.  
  3196.         If  you  are using the Real or Standard modes of Windows, you may
  3197.         have  installed  an EMS device driver for those applications that
  3198.         need  expanded  memory.  In an attempt to reduce fragmentation of
  3199.         upper  memory, it is useful to position the EMS Page Frame either
  3200.         at  the  bottom  or  top  of  an  otherwise empty region of upper
  3201.         memory.   However,  if  you  have  used the DOS=F000:32 option to
  3202.         gain  another  32k  of  DOS  memory, don't position your EMS Page
  3203.         Frame  at  E800  -  Windows  will not run with it any higher than
  3204.         E000.  
  3205.  
  3206.         The  Enhanced  386  mode  of  Windows  will automatically emulate
  3207.         expanded   memory   for   those  applications  that  require  it.
  3208.         Unfortunately,   Windows   ignores   the  EMMExclude  option  and
  3209.         positions  the  EMS  page frame in upper memory.  If the same 64k
  3210.         area  is used by The Last Byte Memory Manager for something else,
  3211.         your   system   may   hang.   To  correct  the  problem,  add  an
  3212.         "EMSPageFrame=nnnn"  option  in  your  SYSTEM.INI  file  to  tell
  3213.         Windows   where   to   put  the  page  frame,  combined  with  an
  3214.         "EXCLUDE=nnnn:64"  option  on  the  LASTBYTE.SYS  command line to
  3215.         keep it from using this area.  
  3216.  
  3217.  
  3218.         7.4.3 "Unsupported Data Configuration"       
  3219.  
  3220.         The  386  Enhanced  mode of Windows 3.0 has a restriction that it
  3221.         cannot  run  when  certain  types  of  software  have been loaded
  3222.         high.   When this happens, Windows will terminate and display the
  3223.         error  message,  "Unsupported  Data  Configuration".   This  only
  3224.         happens  in  386  Enhanced mode, and is not related in particular
  3225.         to use of The Last Byte Memory Manager.  
  3226.  
  3227.         Device  drivers  that are known to load high without this problem
  3228.         include  HIMEM.SYS,  MOUSE.SYS, SETVER.SYS, ANSI.SYS, and all the
  3229.         Key  Software Products device drivers.  A device driver and a TSR
  3230.         known  to  cause this problem are EGA.SYS and DOSKEY.COM.  If you
  3231.         are  experiencing  this error message, you can either run Windows
  3232.         in   another   mode,   or   try  modifying  your  CONFIG.SYS  and
  3233.         AUTOEXEC.BAT files to locate and remove the offending software.  
  3234.  
  3235.         Microsoft   has  removed  this  restriction  in  version  3.1  of
  3236.         Windows.  
  3237.  
  3238.  
  3239.  
  3240.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  3241.  
  3242.  
  3243.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              55
  3244.  
  3245.  
  3246.  
  3247.  
  3248.         7.4.4 HIGHMEM and Windows 386 Enhanced Mode    
  3249.  
  3250.         MS-DOS  applications  run from inside Windows 3.0 are given their
  3251.         own   "virtual"   address  space  of  640k.   Windows  tells  the
  3252.         processor   to  map  memory  references  in  this  space  to  the
  3253.         particular  640k  of  physical memory which has been allocated to
  3254.         the  application.   References  outside this range are considered
  3255.         invalid  and  thus  return  garbage.   Since HIGHMEM is a program
  3256.         that  inspects  upper  memory  between 640k and 1 meg, there's no
  3257.         way  it  can  execute  properly  in  this  context.  HIGHMEM will
  3258.         behave normally outside of Windows.  
  3259.  
  3260.  
  3261.         7.4.5 HIGHDISK and Windows 386 Enhanced Mode    
  3262.  
  3263.         HIGHDISK.SYS  also  uses memory in the 640k to 1 meg range and so
  3264.         is  susceptible  to the same problems that HIGHMEM experiences as
  3265.         discussed  above.  Outside of Windows, and in any mode other than
  3266.         386 Enhanced Mode, HIGHDISK will behave normally.  
  3267.  
  3268.  
  3269.         7.5 HyperWare's HyperDisk        
  3270.  
  3271.         HyperDisk  is  a  shareware disk caching utility.  It's too large
  3272.         to  load  high  with  HIGHDRVR  or  HIGHTSR  under  the 32K limit
  3273.         imposed  by  the  unlicensed  evaluation version of The Last Byte
  3274.         Memory  Manager.   However,  if  your  computer  uses a Chips and
  3275.         Technologies  NEAT  or  386/AT  chipset, you can work around this
  3276.         limitation  by  using HyperDisk's "XS" option to load itself into
  3277.         the  48k block starting at E400.  Be sure to exclude this area by
  3278.         using the following option on the LASTBYTE.SYS command line: 
  3279.  
  3280.                 DEVICE=LASTBYTE.SYS EXC=E400:48 
  3281.  
  3282.         If  you  have a licensed version of The Last Byte Memory Manager,
  3283.         or  if  you don't have one of the Chips and Technologies chipsets
  3284.         mentioned  above,  then  a  better  approach  is  to  use  either
  3285.         HIGHDRVR  or  HIGHTSR  (as  appropriate)  to  load HyperDisk high
  3286.         (without  HyperDisk's  "XS" option).  This method guarantees that
  3287.         the minimum amount of upper memory will be used.  
  3288.  
  3289.  
  3290.  
  3291.  
  3292.  
  3293.  
  3294.  
  3295.  
  3296.  
  3297.  
  3298.  
  3299.  
  3300.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  3301.  
  3302.  
  3303.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              56
  3304.  
  3305.  
  3306.         HyperDisk  can  be  downloaded  from  HyperWare's  BBS  at  (615)
  3307.         864-6871, or obtained directly from: 
  3308.  
  3309.                 HyperWare 
  3310.                 RR#1, Box 91 
  3311.                 Pall Mall, TN 38577 
  3312.                 Voice: (615) 864-6868 
  3313.                 FAX: (615) 864-6870 
  3314.  
  3315.  
  3316.         7.6 J.P. Software's 4DOS       
  3317.  
  3318.         4DOS  is  a  shareware  replacement for COMMAND.COM.  HIGHUMM.SYS
  3319.         may  be  used  to  move the 4DOS command processor and its master
  3320.         environment  into  "Upper  Memory  Blocks"  (UMB's)  in the upper
  3321.         memory  area,  thus  reducing  the  amount of conventional memory
  3322.         below 640k used by 4DOS from 3.4k bytes to 256 bytes.  
  3323.  
  3324.         First  you  must install HIGHUMM.SYS as described earlier in this
  3325.         manual.   Then  add  a  "SHELL="  line  to  CONFIG.SYS  for 4DOS,
  3326.         including  the  options  /U (to place the command processor in an
  3327.         UMB)  and  /E:512U  (to  place the master environment in an UMB).
  3328.         The  value  512  is of course only an example - other environment
  3329.         sizes  may  be  specified.   You  may  also want to specify these
  3330.         options   for   secondary   shells  in  the  4DSHELL  environment
  3331.         variable.  Consult the 4DOS documentation for further details.  
  3332.  
  3333.         4DOS  may  be downloaded from Channel 1 BBS at (617) 354-8873, or
  3334.         obtained directly from: 
  3335.  
  3336.                 J.P. Software             CompuServe: 75300,210 
  3337.                 P.O. Box 1470             BIX: "trawson" 
  3338.                 E. Arlington, MA 02174    Internet, Bitnet, etc: 
  3339.                 Voice: (617) 646-3975       75300.210@compuserve.com 
  3340.                 Fax: (617) 646-0904 
  3341.  
  3342.  
  3343.         7.7 David Hamilton's BUFFIT       
  3344.  
  3345.         There's  a very nice shareware scroll-back TSR called BUFFIT that
  3346.         saves  lines  of  text that have been scrolled off the top of the
  3347.         screen  and allows you to pull them back down for review.  One of
  3348.         the  advantages  of  version  3.0  and later of BUFFIT is that it
  3349.         will  load  itself  entirely  into a UMB provided by HIGHUMM.SYS,
  3350.         thus using no conventional memory at all.  
  3351.  
  3352.         To  install  BUFFIT into upper memory, first you must install the
  3353.         HIGHUMM.SYS  device  driver  by  inserting the following lines in
  3354.         your CONFIG.SYS file: 
  3355.  
  3356.                 DEVICE=LASTBYTE.SYS {and any LASTBYTE options} 
  3357.  
  3358.  
  3359.  
  3360.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  3361.  
  3362.  
  3363.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              57
  3364.  
  3365.  
  3366.                 DEVICE=HIGHUMM.SYS 
  3367.  
  3368.         Then  all  you  have to do is reboot your computer and run BUFFIT
  3369.         from  the  command  line,  or  else  add  it to your AUTOEXEC.BAT
  3370.         file.  
  3371.  
  3372.         BUFFIT  is  available  from  a number of BBS's, usually under the
  3373.         filename BUFFIT30.ZIP.  
  3374.  
  3375.  
  3376.         7.8 Charles Lazo's WAS       
  3377.  
  3378.         On  a  computer  with  no  expanded memory, you might want to use
  3379.         HIGHEMS3  to  provide  some  Expanded  Memory  for Charles Lazo's
  3380.         scroll-back  TSR, WAS.COM.  This utility saves lines of text that
  3381.         have  been  scrolled  off the top of the screen and allows you to
  3382.         pull  them  back down for review.  WAS is available from a number
  3383.         of BBS's, usually under the filename WAS062.ZIP.  
  3384.  
  3385.  
  3386.  
  3387.  
  3388.  
  3389.  
  3390.  
  3391.  
  3392.  
  3393.  
  3394.  
  3395.  
  3396.  
  3397.  
  3398.  
  3399.  
  3400.  
  3401.  
  3402.  
  3403.  
  3404.  
  3405.  
  3406.  
  3407.  
  3408.  
  3409.  
  3410.  
  3411.  
  3412.  
  3413.  
  3414.  
  3415.  
  3416.  
  3417.  
  3418.  
  3419.  
  3420.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  3421.  
  3422.  
  3423.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              58
  3424.  
  3425.  
  3426.                         APPENDIX 1 - HOW TO REACH US     
  3427.  
  3428.  
  3429.         The  KSP  telephone (415-364-9847) is shared by our BBS, FAX, and
  3430.         voice  mail  answering  system.   Approximate  hours of operation
  3431.         are: 
  3432.  
  3433.                   Voice mail and FAX: 8am - 5pm PST (weekdays)
  3434.  
  3435.                  BBS system: 5pm - 8am PST (24 hrs on weekends)
  3436.  
  3437.            BBS Parameters: 1200/2400/9600/14400 baud (v.32bis/v.42bis)
  3438.                              8 data bits, No Parity
  3439.  
  3440.         If  your call is answered by the voice mail system, it can take a
  3441.         message   that will be automatically forwarded to someone who can
  3442.         return  your  call as soon as possible.  In addition, it offers a
  3443.         touch-tone driven menu of useful information about our product.  
  3444.  
  3445.         To send us a FAX, follow the following steps: 
  3446.  
  3447.              Step 1:  You'll  be  greeted  by  out Voice Mail system
  3448.                       which  will  prompt you to press 1 if you have
  3449.                       a touch-tone phone.  
  3450.  
  3451.              Step 2:  Press 1.  You'll then hear a menu that prompts
  3452.                       you to press 5 to send a FAX.  
  3453.  
  3454.              Step 3:  Press  5.  In a few seconds, you'll hear a FAX
  3455.                       tone; press start on your FAX machine.  
  3456.  
  3457.         That's  all  there  is to it.  Be sure to include your FAX number
  3458.         for  the  reply  which  will  be  sent  back to you in one or two
  3459.         days.  
  3460.  
  3461.         If  you have access to electronic mail, you can send us a message
  3462.         via any of the following: 
  3463.  
  3464.         On BITNET, send mail to: DLEWIS@SCU.BITNET
  3465.  
  3466.         On COMPUSERVE, send mail to: >Internet:DLEWIS@SCUACC.SCU.EDU
  3467.  
  3468.         On CONNECT, send mail to: CONNECT id "DASNET"
  3469.  
  3470.                 1st line of message: \"DLEWIS@SCUACC.SCU.EDU\"@DASNET
  3471.  
  3472.         On FIDONET, send mail to: UUCP
  3473.  
  3474.                 1st line of message: To: DLEWIS@SCUACC.SCU.EDU
  3475.  
  3476.         On INTERNET, send mail to: DLEWIS@SCUACC.SCU.EDU
  3477.  
  3478.  
  3479.  
  3480.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  3481.  
  3482.  
  3483.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              59
  3484.  
  3485.  
  3486.  
  3487.         On MCI,
  3488.  
  3489.                  At the "To:" prompt enter: DLEWIS (EMS)
  3490.                 At the "EMS:" prompt enter: Internet
  3491.                 At the "Mbx:" prompt enter: DLEWIS@SCUACC.SCU.EDU
  3492.  
  3493.         On PRODIGY, send mail to: VGDC59A
  3494.  
  3495.         On TELENET's Telemail Service:
  3496.  
  3497.                 Send to: [INTERMAIL/USCISI]TELEMAIL/USA
  3498.                 1st line of message: Forward: ARPA
  3499.                 2nd line of message: To: DLEWIS@SCUACC.SCU.EDU
  3500.  
  3501.  
  3502.  
  3503.  
  3504.  
  3505.  
  3506.  
  3507.  
  3508.  
  3509.  
  3510.  
  3511.  
  3512.  
  3513.  
  3514.  
  3515.  
  3516.  
  3517.  
  3518.  
  3519.  
  3520.  
  3521.  
  3522.  
  3523.  
  3524.  
  3525.  
  3526.  
  3527.  
  3528.  
  3529.  
  3530.  
  3531.  
  3532.  
  3533.  
  3534.  
  3535.  
  3536.  
  3537.  
  3538.  
  3539.  
  3540.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  3541.  
  3542.  
  3543.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              60
  3544.  
  3545.  
  3546.                       APPENDIX 2 - ACKNOWLEDGEMENTS        
  3547.  
  3548.  
  3549.         The  Last  Byte  Memory  Manager  wouldn't  exist without all the
  3550.         companies  that  manufacture  the  shadow  ram  memory controller
  3551.         chips,  and  who  have  provided techinical information on how to
  3552.         program  their  configuration registers.  If you know of a memory
  3553.         controller  chip  we  haven't included, please let us know and we
  3554.         will try to add it.  
  3555.  
  3556.         The  Last  Byte  Memory  Manager consists of almost a megabyte of
  3557.         source  code,  written  mostly in C with a sprinkling of assembly
  3558.         language,  and  compiled using version 3.1 of the DeSmet/C-Ware C
  3559.         compiler.   We  are grateful for the simplicity, flexibility, and
  3560.         speed  of this compiler, as well as the generous support provided
  3561.         by Joel and Susan Farley of C-Ware Corporation.  
  3562.  
  3563.         The  Last Byte Memory Manager could not have been created without
  3564.         the  gracious  support  of  many  people.   We  wish to thank the
  3565.         following  individuals  who  helped  to  test  beta  versions  or
  3566.         offered  useful  suggestions  for  new  features: Ron Cohen, J.B.
  3567.         Compton,   David   Durgee,  Mike  Hagerty,  Scott  Jordahl,  Alan
  3568.         Lambert,  Rob  Nee,  Kevin Parris, Dan Proctor, Graham Robertson,
  3569.         Ken   Sanquist,  Tony  Sheehan,  Peter  Summers,  Steve  Hodsdon,
  3570.         Anthony  Cox, My Phung, Martin Beckmann, and Prof. Timo Salmi (of
  3571.         the University of Vaasa, Finland).  
  3572.  
  3573.         Thank's  also  go to Tom Rawson of J. P. Software for providing a
  3574.         copy  of  4DOS, to Sue Nageotte of Digital Research for providing
  3575.         a  copy  of DR DOS, and to Pat Gelsinger of Intel Corporation for
  3576.         lending  his  intimate  knowledge  of the 80x86 instruction sets.
  3577.         And  finally, a special thanks to Serge Caron and Roger Cross for
  3578.         their suggestions, technical advice, patience, and friendship.  
  3579.  
  3580.  
  3581.  
  3582.  
  3583.  
  3584.  
  3585.  
  3586.  
  3587.  
  3588.  
  3589.  
  3590.  
  3591.  
  3592.  
  3593.  
  3594.  
  3595.  
  3596.  
  3597.  
  3598.  
  3599.  
  3600.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  3601.  
  3602.  
  3603.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              61
  3604.  
  3605.  
  3606.                      APPENDIX 3 - CHIPSET LIMITATIONS       
  3607.  
  3608.  
  3609.         Some  of the features offered by The Last Byte Memory Manager are
  3610.         dependent  on  the  presence  of  a  shadow ram memory controller
  3611.         chip,  what  memory  it  controls,  and  the organization of that
  3612.         memory  into  regions.   Shown  below is a summary of RAM and ROM
  3613.         regions  controlled  by  each of the memory controller chips that
  3614.         we  support.   Each  entry indicates the starting segment address
  3615.         of  memory, followed by an indication of the organization of that
  3616.         memory into regions.  
  3617.  
  3618.         Part No.        Ram Range       RAM Regions             ROM Regions
  3619.         --------        ---------       ----------              -----------
  3620.         82C212          A000-FFFF       A000:24x16k             C000:4x64k
  3621.         82C222          A000-FFFF       A000:24x16k             C000:4x64k
  3622.         82C230          A000-FFFF       A000:24x16k             C000:4x64k
  3623.         82C235          A000-FFFF       A000:24x16k             C000:8x32k
  3624.         82C241          A000-FFFF       A000:24x16k             C000:4x64k
  3625.         82C281          C000-EFFF       C000:12x16k             E000:64k
  3626.         82C282          C000-EFFF       C000:12x16k             E000:64k
  3627.         82C283          C000-EFFF       C000:12x16k             E000:64k
  3628.         82C302          A000-FFFF       A000:24x16k             C000:4x64k
  3629.         82C302C         A000-FFFF       A000:24x16k             C000:4x64k
  3630.         82C307          A000-FFFF       A000:24x16k             C000:4x64k
  3631.         82C311          A000-FFFF       A000:24x16k             C000:4x64k
  3632.         82C322          A000-FFFF       A000:16x16k,1x128k      C000:2x64k,1x128k
  3633.         82C351          A000-FFFF       A000:24x16k             C000:4x64k
  3634.         82343           C000-EFFF       C000:12x16k             n/a
  3635.         82346           C000-EFFF       C000:12x16k             n/a
  3636.         82359           A000-FFFF       A000:24x16k             n/a
  3637.         82C382          C000-EFFF       C000:12x16k             E000:64k
  3638.         82C391          C000-EFFF       C000:12x16k             E000:64k
  3639.         82C461          C000-EFFF       C000:12x16k             C000:3x64k
  3640.         82C482          C000-EFFF       C000:12x16k             E000:64k
  3641.         82C491          C000-EFFF       C000:12x16k             E000:64k
  3642.         82C493          C000-EFFF       C000:12x16k             E000:64k
  3643.         82C495          C000-EFFF       C000:12x16k             E000:64k
  3644.         82C496          C000-EFFF       C000:12x16k             C000:3x64k
  3645.         82C682          C000-FFFF       C000:8x16k,2x64k        n/a
  3646.         82C812          A000-FFFF       A000:24x16k             C000:4x64k
  3647.         82C836          A000-FFFF       A000:24x16k             C000:8x32k
  3648.         82C841          A000-FFFF       A000:24x16k             C000:4x64k
  3649.         ET82C491        C000-EFFF       C000:12x16k             C000:3x64k
  3650.         FRX36C300       C000-FFFF       C000:6x32k,1x64k        n/a
  3651.         HT12            Page Frame      4x16k                   n/a
  3652.         HT21            C000-DFFF       C000:8x16k              n/a
  3653.         HT22            C000-DFFF       C000:8x16k              n/a
  3654.         HT103           C000-DFFF       C000:8x16k              n/a
  3655.         HT113           C000-DFFF       C000:8x16k              n/a
  3656.         SL82C361        C000-FFFF       C000:8x16k,2x64k        C000:8x16k,2x64k
  3657.  
  3658.  
  3659.  
  3660.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  3661.  
  3662.  
  3663.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              62
  3664.  
  3665.  
  3666.         SL82C461        C000-FFFF       C000:8x16k,2x64k        C000:8x16k,2x64k
  3667.         ST62C202        E000-FFFF       E000:4x32k              n/a
  3668.         ST62C241        E000-FFFF       E000:4x32k              n/a
  3669.         ST62C251        E000-FFFF       E000:4x32k              n/a
  3670.         TACT82411       A000-FFFF       A000:24x16k             C000:4x64k
  3671.         TACT82S411      A000-FFFF       A000:24x16k             C000:4x64k
  3672.         UM82C212        A000-FFFF       A000:24x16k             C000:4x64k
  3673.         UM82C481        C000-FFFF       C000:8x16k,2x64k        C000:8x16k,2x64k
  3674.         VL82C202        A000-FFFF       A000:6x64k              n/a
  3675.         VL82C310        A000-FFFF       A:4x32k,C:8*16k,E:4x32k n/a
  3676.         VL82C311        A000-FFFF       A:4x32k,C:8*16k,E:4x32k n/a
  3677.         VL82C320        C000-EFFF       C000:12x16k             n/a
  3678.         VL82C330        C000-EFFF       C000:12x16k             n/a
  3679.         VL82C486        A000-FFFF       A000:24x16k             n/a
  3680.  
  3681.  
  3682.  
  3683.  
  3684.  
  3685.  
  3686.  
  3687.  
  3688.  
  3689.  
  3690.  
  3691.  
  3692.  
  3693.  
  3694.  
  3695.  
  3696.  
  3697.  
  3698.  
  3699.  
  3700.  
  3701.  
  3702.  
  3703.  
  3704.  
  3705.  
  3706.  
  3707.  
  3708.  
  3709.  
  3710.  
  3711.  
  3712.  
  3713.  
  3714.  
  3715.  
  3716.  
  3717.  
  3718.  
  3719.  
  3720.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  3721.  
  3722.  
  3723.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              63
  3724.  
  3725.  
  3726.                     APPENDIX 4 - LICENSED DISTRIBUTORS       
  3727.  
  3728.  
  3729.         You  can  order directly from Key Software Products or any of the
  3730.         licensed  distributors  listed  below.   Those  which  can accept
  3731.         credit  card  orders are noted.  If you order by credit card, you
  3732.         must  indicate  the  type  of  card,  the  card number, your name
  3733.         exactly as printed on the card, and the card expiration date.  
  3734.  
  3735.         Information  in  this  list  is subject to change without notice.
  3736.         Foreign  exchange rates vary and thus affect overseas pricing, so
  3737.         it   is  a  good  idea  to  check  with  the  distributor  before
  3738.         ordering.  
  3739.  
  3740.         Distributors  are  for ordering only.  For additional information
  3741.         about  dealer pricing, volume discounts, site licensing, shipping
  3742.         of  product,  returns,  latest  version number or other technical
  3743.         information, call or write Key Software Products directly.  
  3744.  
  3745.         Most  distributors  can  provide  the  access  key directly.  The
  3746.         Public   (software)  Library,  however,  accepts  your  telephone
  3747.         order,  and  then  forwards  an  E-Mail  message  to Key Software
  3748.         Products.   Delivery of this message may take one or two days. We
  3749.         will  contact you and provide the access key upon receipt of this
  3750.         purchase confirmation.  
  3751.  
  3752.         Companies  interested  in obtaining 10 or more copies of The Last
  3753.         Byte  Memory  Manager  with  discounted  pricing  should  have an
  3754.         officer  of the company (such as the president, a vice president,
  3755.         director,  etc.) complete the Site License Order Form and send it
  3756.         directly  to Key Software Products, British Software Licensing in
  3757.         the  United  Kingdom,  or  to  Eurocom  Shareware in Holland.  No
  3758.         other distributor will process a Site License request.  
  3759.  
  3760.  
  3761.         KEY SOFTWARE PRODUCTS           Phone: (415) 364-9847
  3762.         440 Ninth Avenue                Price: US $29.95 + Tax (CA)
  3763.         Menlo Park, CA 94025            Method: Check
  3764.  
  3765.  
  3766.         The Public (software) Library   Phone: (800) 242-4775, or
  3767.         P.O. Box 35705                         (713) 524-6394
  3768.         Houston, Texas 77235-5705         FAX: (713) 524-6398
  3769.                                         CompuServe: 71355,470
  3770.                                         Price: US $29.95 + Tax (TX)
  3771.                                         Method: MC, Visa, AmEx,
  3772.                                                 Discover Card
  3773.  
  3774.  
  3775.  
  3776.  
  3777.  
  3778.  
  3779.  
  3780.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  3781.  
  3782.  
  3783.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              64
  3784.  
  3785.  
  3786.         HYPERWARE (makes HyperDisk)     Phone: (615) 864-6868
  3787.         RR#1, Box 91                      FAX: (615) 864-6870
  3788.         Pall Mall, TN 38577             CompuServe: 72230,2321
  3789.                                         Price: US $29.95 + Tax (TN)
  3790.                                         Method: Master Card, Visa
  3791.  
  3792.  
  3793.         EUROCOM SHAREWARE               Contact: Mr. Gary van Beeck
  3794.         Zwedenburg 119                  Phone: (+31.70) 347-3777
  3795.         NL-2591 BD The Hague              FAX: (+31.70) 347-7356
  3796.         HOLLAND                         Price: Hfl 74.-- (guilders only)
  3797.                                         Method: By Eurocheque, or
  3798.                                         Postbank (Giro): 188423
  3799.                                         payable to: G. van Beeck
  3800.  
  3801.  
  3802.         BRITISH SOFTWARE LICENSING      Contact: Mr. Graham Robertson
  3803.         280 (T/L) West Princes Street   Phone: (44.41) 339-8855 x5021
  3804.         Glasgow G4 9EU                         (44.41) 339-7264 (msg)
  3805.         UNITED KINGDOM                  Price: 21 pounds
  3806.                                         Method: Access, Visa, MC, Eurocard
  3807.  
  3808.         Internet E-Mail: Graham_Robertson@vme.glasgow.ac.uk
  3809.  
  3810.  
  3811.  
  3812.  
  3813.  
  3814.  
  3815.  
  3816.  
  3817.  
  3818.  
  3819.  
  3820.  
  3821.  
  3822.  
  3823.  
  3824.  
  3825.  
  3826.  
  3827.  
  3828.  
  3829.  
  3830.  
  3831.  
  3832.  
  3833.  
  3834.  
  3835.  
  3836.  
  3837.  
  3838.  
  3839.  
  3840.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  3841.  
  3842.  
  3843.         Jul 01, 1992    THE LAST BYTE MEMORY MANAGER (tm)              65
  3844.  
  3845.  
  3846.                       APPENDIX 5 - LIMITED WARRANTY       
  3847.  
  3848.  
  3849.         This  software  is provided 'as is' without warranty of any kind,
  3850.         either  expressed  or  implied, including, but not limited to the
  3851.         implied   warranties   of   merchantability  and  fitness  for  a
  3852.         particular  purpose.   The  entire  risk  as  to  the quality and
  3853.         performance of the program is with you.  
  3854.  
  3855.         Some  states do not allow the exclusion of implied warranties, so
  3856.         the  above  exclusions may not apply to you.  This warranty gives
  3857.         you  specific  legal  rights  and  you may also have other rights
  3858.         which vary from state to state.  
  3859.  
  3860.         Key  Software  Products  has  taken  due  care  in  preparing the
  3861.         documentation  and  software  included  in  The  Last Byte Memory
  3862.         Manager   to   ascertain  their  correctness  and  effectiveness.
  3863.         However,  Key  Software  Products does not warrant that operation
  3864.         of  this  software  will  be  uninterrupted or error free.  In no
  3865.         event  shall  Key  Software  Products be liable for incidental or
  3866.         consequential  damages  in  connection with or arising out of the
  3867.         furnishing, performance, or use of this software.  
  3868.  
  3869.  
  3870.                                      LICENSE
  3871.  
  3872.         You  MAY  use  this software on any computer or computers in your
  3873.         possesion, but on no more than one computer at any given time.  
  3874.  
  3875.         You  MAY  copy this software into any machine readable or printed
  3876.         form  for  backup or modification purposes in support of your use
  3877.         of the software.  
  3878.  
  3879.         You  MAY  distribute  the original unmodified, unlicensed version
  3880.         of  this  software,  but you may not charge a fee exceeding $5.00
  3881.         to  cover  the  cost of duplicating, shipping, and handling.  You
  3882.         may NOT distribute a licensed version of this software.  
  3883.  
  3884.         You  may  NOT  use,  copy, modify, sublicense, assign or transfer
  3885.         this  software  and  its license, or any copy or modification, in
  3886.         whole  or  in  part,  except  as  expressly  provided for in this
  3887.         license.  
  3888.  
  3889.  
  3890.  
  3891.  
  3892.  
  3893.  
  3894.  
  3895.  
  3896.  
  3897.  
  3898.  
  3899.  
  3900.         Copyright (C) 1990-92, Key Software Products. All Rights Reserved
  3901.